Je veux savoir si une chaîne commence par le caractère / chaîne spécifié ou se termine par elle dans jQuery.
Par exemple:
var str = 'Hello World';
if( str starts with 'Hello' ) {
alert('true');
} else {
alert('false');
}
if( str ends with 'World' ) {
alert('true');
} else {
alert('false');
}
S'il n'y a pas de fonction, alors une alternative?
javascript
jquery
string
Naveed
la source
la source
Réponses:
Une option consiste à utiliser des expressions régulières:
la source
str.match(/^Hello/)
Mais la forme/regex/.test(str)
est encore meilleure pour ce cas particulier, par stackoverflow.com/questions/10940137/…var isUnavailable = $("#StatusId option:selected").text().match("^Unavailable - ");
- pourquoi cela renvoie-t-il la valeur nulle lorsque l'option sélectionnée est "Non disponible - Autre"?Pour commencer, vous pouvez utiliser indexOf:
...
ref
et vous pouvez faire le calcul en fonction de la longueur de la chaîne pour déterminer «endswith».
la source
lastIndexOf()
pour la fin;)("1234".lastIndexOf('Hello') == "1234".length - 'Hello'.length)
résultats en vrai.Il n'est pas nécessaire que jQuery le fasse. Vous pouvez coder un wrapper jQuery mais ce serait inutile, vous devriez donc mieux utiliser
car la méthode match () est obsolète.
PS: le drapeau "i" dans RegExp est facultatif et signifie insensible à la casse (il retournera donc également vrai pour "bonjour", "hEllo", etc.).
la source
Vous n'avez pas vraiment besoin de jQuery pour de telles tâches. Dans la spécification ES6, ils ont déjà des méthodes prêtes à l' emploi startWith et endsWith .
Actuellement disponible en FF et Chrome . Pour les anciens navigateurs, vous pouvez utiliser leurs polyfills ou substr
la source
Vous pouvez toujours étendre le
String
prototype comme ceci:Et utilisez-le comme ceci:
la source
ES6 prend désormais en charge la méthode
startsWith()
etendsWith()
pour vérifier le début et la fin destring
s. Si vous souhaitez prendre en charge les moteurs antérieurs à es6, vous pouvez envisager d'ajouter l'une des méthodes suggérées auString
prototype.la source
()[].
) rompra vos méthodes de polyfill. Vous devez préparer les chaînes avec une fonction regex-escape. Ou encore mieux: utilisez un polyfill testé au combat à partir decore-js