Chcę wiedzieć, czy ciąg zaczyna się od określonego znaku / ciągu, czy kończy się na nim w jQuery.
Na przykład:
var str = 'Hello World';
if( str starts with 'Hello' ) {
alert('true');
} else {
alert('false');
}
if( str ends with 'World' ) {
alert('true');
} else {
alert('false');
}
Jeśli nie ma żadnej funkcji, to jakaś alternatywa?
javascript
jquery
string
Naveed
źródło
źródło
Odpowiedzi:
Jedną z opcji jest użycie wyrażeń regularnych:
źródło
str.match(/^Hello/)
Ale forma/regex/.test(str)
jest jeszcze lepsza w tym konkretnym przypadku, według stackoverflow.com/questions/10940137/…var isUnavailable = $("#StatusId option:selected").text().match("^Unavailable - ");
- dlaczego ta wartość jest zerowa, gdy wybrana opcja to „Niedostępne - inne”?Na początek możesz użyć indexOf:
...
ref
i możesz wykonać matematykę na podstawie długości łańcucha, aby określić „koniec z”.
źródło
lastIndexOf()
do końców;)("1234".lastIndexOf('Hello') == "1234".length - 'Hello'.length)
daje w wyniku prawda.Nie ma potrzeby wykonywania tego przez jQuery. Możesz kodować opakowanie jQuery, ale byłoby to bezużyteczne, więc powinieneś lepiej go używać
ponieważ metoda match () jest przestarzała.
PS: flaga „i” w RegExp jest opcjonalna i oznacza wielkość liter bez rozróżniania wielkości liter (więc zwróci również prawdę dla „hello”, „hEllo” itp.).
źródło
Tak naprawdę nie potrzebujesz jQuery do takich zadań. W specyfikacji ES6 mają już gotowe metody zaczynające się i kończące .
Obecnie dostępne w FF i Chrome . W przypadku starszych przeglądarek możesz użyć ich wypełniaczy lub substratu
źródło
Zawsze możesz przedłużyć
String
prototyp w ten sposób:I użyj tego w ten sposób:
źródło
ES6 obsługuje teraz metodę
startsWith()
iendsWith()
do sprawdzania początku i końcastring
s. Jeśli chcesz obsługiwać silniki starsze niż ES6, możesz rozważyć dodanie jednej z sugerowanych metod doString
prototypu.źródło
()[].
poprzedzone znakiem ), spowoduje uszkodzenie metod wypełniania. Musisz przygotować ciągi znaków z funkcją ucieczki wyrażenia regularnego. Lub jeszcze lepiej: użyj sprawdzonego w bitwie polifillu zcore-js