Jakie jest najlepsze podejście do wielkich liter w ciągu?
javascript
string
capitalization
vsync
źródło
źródło
text-transform:capitalize;
.Odpowiedzi:
źródło
'CHECK THIS OUT'.capitalize(true) -> "Check This Out"
.true
Parametr umysłu .Najkrótszą implementacją wielkich liter w ciągu jest użycie funkcji strzałek ES6:
Implementacja zgodna z ES5:
Wyrażenie regularne zasadniczo dopasowuje pierwszą literę każdego słowa w danym ciągu i przekształca tylko tę literę na wielkie litery:
W przypadku znaków spoza ASCII skorzystaj z tego rozwiązania
Ten wyrażenie regularne dopasowuje pierwszą literę i każdą literę niebiałą poprzedzoną spacją w danym ciągu i przekształca tylko tę literę na wielkie litery:
Grupę, której nie udało się przechwycić, można wykorzystać tutaj w następujący sposób
/(?:^|\s)\S/g
chociażg
flaga w naszym wyrażeniu regularnym nie będzie przechwytywać podgrup według projektu.Twoje zdrowie!
źródło
päijät-häme
staje sięPäIjäT-HäMe
EisbäRen
jest na przykład jeden wynik.Päijät-Häme
, ale przynajmniej w Chrome białe znaki nie zawierają myślnika (-), więc druga część nazwy nie jest pisana wielkimi literami. Może być ustawiony jako/(^|\s|-)\S/g
.wyjście: „To najgorszy ciąg w historii”
Aktualizacja:
Wygląda na to, że to rozwiązanie zastępuje moje: https://stackoverflow.com/a/7592235/104380
źródło
Odpowiedź udzielana przez vsync działa tak długo, jak nie masz litery alfabetu w ciągu wejściowego.
Nie znam powodu, ale najwyraźniej
\b
w wyrażeniach regularnych dopasowuje również litery akcentowane (testowane na IE8 i Chrome), więc ciąg taki"località"
zostałby nieprawidłowo zamieniony na wielkie litery zamienione na"LocalitÀ"
(à
litera jest pisana wielkimi literami, ponieważ regexp myśli, że to granica słowa)Bardziej ogólną funkcją, która działa również z literami akcentowanymi, jest ta:
Możesz użyć tego w następujący sposób:
źródło
" javascript".toCapitalize() -> " javascript"
Ponieważ wszyscy udzielili ci odpowiedzi JavaScript, o którą prosiłeś, dodam, że właściwość CSS
text-transform: capitalize
zrobi dokładnie to.Zdaję sobie sprawę, że może nie o to prosisz - nie podałeś nam żadnego kontekstu, w którym to uruchamiasz - ale jeśli chodzi tylko o prezentację, zdecydowanie wybrałbym alternatywę CSS.
źródło
John Resig (znany z jQuery) przeniósł skrypt JavaScript napisany przez Johna Grubera na JavaScript. Ten skrypt używa wielkich liter w sposób bardziej inteligentny, nie używa wielkich liter takich jak na przykład „of” i „and”.
Można go znaleźć tutaj: Wielkie litery w JavaScript
źródło
Za pomocą JavaScript i HTML
Zasadniczo możesz to zrobić,
string.capitalize()
a każda litera każdego słowa będzie pisana wielką literą.Źródło: http://www.mediacollege.com/internet/javascript/text/case-capitalize.html
źródło
if (object.capitalize) {...} else {String.prototype.capitalize = function()....}
gdzie obiekt jest typuString
. To naprawdę bardzo proste.Odpowiedź Ivo jest dobra, ale wolę się nie zgadzać,
\w
ponieważ nie ma potrzeby używania wielkich liter 0-9 i AZ. Możemy je zignorować i pasować tylko do az.Jest to ten sam wynik, ale myślę, że jest jaśniejszy pod względem kodu samodokumentującego.
źródło
"Är Toaletten"
. Twoja odpowiedź, wiele lat po udzieleniu bardzo dobrej odpowiedzi, nie przyczynia się do dyskusji./\b\w/g
zawiesza się również w przypadku liter innych niż angielski. Nie wszyscy mają do czynienia ze znakami Unicode, a to pomoże tym, którzy tego nie chcą.Jeśli używasz lodash w swojej aplikacji JavaScript, możesz użyć _.capitalize :
źródło
Zwięzły sposób na wykonanie tego w ES6 może wyglądać mniej więcej tak.
To tylko wielkie litery pierwszej litery i nie wpływa na resztę wielkości zdania.
źródło
Moje rozwiązanie:
Przykład:
źródło
'a áAA. bb . bbb .cc .d'.toCapital();
=>a Áaa. bb . Bbb .cc .d
Powinno to obejmować najbardziej podstawowe przypadki użycia.
Edycja: Poprawiona czytelność mapowania.
źródło
/\b\w/g
...Ta dawka rozwiązania nie używa wyrażenia regularnego, obsługuje znaki akcentowane, a także obsługiwana przez prawie każdą przeglądarkę.
Stosowanie:
Wynik:
źródło
http://www.mediacollege.com/internet/javascript/text/case-capitalize.html jest jedną z wielu dostępnych odpowiedzi.
Google może być wszystkim, czego potrzebujesz do takich problemów.
Naiwnym podejściem byłoby dzielenie łańcucha przez spację, pisanie wielką literą każdego elementu wynikowej tablicy i łączenie jej z powrotem. Pozostawia to istniejące wielkie litery (np. HTML pozostaje HTMLem i nie staje się czymś głupim jak HTML). Jeśli nie chcesz, aby to wpłynęło, zmień cały łańcuch na małe litery przed podzieleniem.
źródło
W tym kodzie wielkie litery są kropkowane:
źródło
Lubię iść z łatwym procesem. Najpierw zmień ciąg znaków na tablicę, aby ułatwić iterację, a następnie za pomocą funkcji mapy zmień każde słowo tak, jak chcesz.
źródło
Jquery lub JavaScript nie zapewnia wbudowanej metody osiągnięcia tego celu.
Transformacja testowa CSS (transformacja tekstu: wielkie litery;) tak naprawdę nie kapitalizuje danych ciągu, ale pokazuje renderowanie wielkich liter na ekranie.
Jeśli szukasz bardziej uzasadnionego sposobu osiągnięcia tego na poziomie danych za pomocą zwykłego vanillaJS, użyj tego rozwiązania =>
źródło
Użyj tego:
źródło
Możesz użyć następujących słów, aby wpisać wielkie litery w ciągu:
źródło
Istnieje również locutus: https://locutus.io/php/strings/ucwords/, który definiuje to w ten sposób:
źródło
W tym celu użyłbym wyrażenia regularnego:
źródło