Próbowałem uzyskać polecenie JavaScript regex, aby zamienić coś "thisString"
w stylu, "This String"
ale najbliższe mi jest zastąpienie litery, co skutkuje czymś w rodzaju "Thi String"
lub "This tring"
. Jakieś pomysły?
Aby wyjaśnić, że potrafię poradzić sobie z prostotą pisania wielkimi literami, po prostu nie jestem tak silny w przypadku wyrażeń regularnych, a dzielenie się "somethingLikeThis"
na "something Like This"
to, gdzie mam problemy.
javascript
regex
Czarodziej to zrobił
źródło
źródło
Odpowiedzi:
wyświetlacze
Pokaż fragment kodu
źródło
str.replace(/((?<!^)[A-Z](?![A-Z]))(?=\S)/g, ' $1').replace(/^./, s => s.toUpperCase() );
KonwertujeuserID
naUser ID
, a nawet konwertujeuserIDField
naUser ID Field
Byłem tym bezinteresownie zainteresowany, szczególnie w obsłudze sekwencji wielkich liter, na przykład w xmlHTTPRequest. Wymienione funkcje wygenerowałyby „Żądanie Xml HTTP” lub „Żądanie Xml HTTP”, moja daje „Żądanie Xml HTTP”.
Istnieje również wersja String.prototype w GIST .
źródło
str.replace(/((?<!^)[A-Z](?![A-Z]))(?=\S)/g, ' $1').replace(/^./, s => s.toUpperCase() )
Można to zwięźle zrobić za pomocą regex lookahead ( demo na żywo ):
(Myślałem, że
g
flaga (globalna) jest konieczna, ale co dziwne, nie jest w tym konkretnym przypadku).Używanie lookahead with
split
zapewnia, że dopasowana wielka litera nie jest używana i pozwala uniknąć zajmowania się spacją wiodącą, jeśli UpperCamelCase jest czymś, z czym musisz sobie poradzić. Aby zacząć wielką literę każdego z nich, możesz użyć:Metoda
map
tablicowa jest funkcją ES5, ale nadal można jej używać w starszych przeglądarkach z pewnym kodem z MDC . Alternatywnie możesz iterować po elementach tablicy przy użyciufor
pętli.źródło
Myślę, że to powinno być w stanie obsłużyć kolejne wielkie litery, a także proste camelCase.
Na przykład: someVariable => someVariable, ale ABCCode! = ABC Code.
Poniższe wyrażenie regularne działa na Twoim przykładzie, ale jest też typowym przykładem reprezentowania skrótów w camcelCase.
Możesz również dostosować, jak powyżej, aby wykorzystać pierwszy znak.
źródło
spacecamel („somethingLikeThis”)
// zwrócona wartość: coś takiego
źródło
Lodash dobrze sobie z tym radzi
_.startCase()
źródło
Rozwiązanie, które obsługuje również liczby:
Testowane tutaj [JSFiddle, brak biblioteki. Nie próbowano IE]; powinien być dość stabilny.
źródło
Jeśli nie przejmujesz się starszymi przeglądarkami (lub nie masz nic przeciwko używaniu dla nich funkcji awaryjnej redukcji ), możesz podzielić nawet ciągi znaków, takie jak „xmlHTTPRequest” (ale z pewnością nie da się tego zrobić w przypadku „XMLHTTPRequest”).
źródło
Moja wersja
źródło
Wypróbuj to rozwiązanie tutaj -
źródło
Nie regex, ale warto znać proste i stare techniki, takie jak ta:
źródło