Je veux savoir si une chaîne commence par le caractère/chaîne spécifié ou se termine par 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 aucune alternative?
Une option consiste à utiliser des expressions régulières:
if (str.match("^Hello")) {
// do this if begins with Hello
}
if (str.match("World$")) {
// do this if ends in world
}
Pour startswith, vous pouvez utiliser indexOf:
if(str.indexOf('Hello') == 0) {
...
et vous pouvez faire les calculs en fonction de la longueur de la chaîne pour déterminer "endswith".
if(str.lastIndexOf('Hello') == str.length - 'Hello'.length) {
JQuery n’a nul besoin de le faire. Vous pouvez coder un wrapper jQuery mais cela ne servirait à rien, vous devriez donc mieux utiliser
var str = "Hello World";
window.alert("Starts with Hello ? " + /^Hello/i.test(str));
window.alert("Ends with Hello ? " + /Hello$/i.test(str));
car la méthode match () est obsolète.
PS: le drapeau "i" dans RegExp est optionnel et signifie "insensible à la casse" (donc, il retournera aussi vrai pour "hello", "hEllo", etc.).
Vous n'avez pas vraiment besoin de jQuery pour de telles tâches. Dans la spécification ES6, il existe déjà des méthodes prêtes à l'emploi startsWith et endsWith .
var str = "To be, or not to be, that is the question.";
alert(str.startsWith("To be")); // true
alert(str.startsWith("not to be")); // false
alert(str.startsWith("not to be", 10)); // true
var str = "To be, or not to be, that is the question.";
alert( str.endsWith("question.") ); // true
alert( str.endsWith("to be") ); // false
alert( str.endsWith("to be", 19) ); // true
actuellement disponible dans FF et Chrome . Pour les anciens navigateurs, vous pouvez utiliser leurs polyfill ou substr
Vous pouvez toujours étendre le prototype String
comme ceci:
// Checks that string starts with the specific string
if (typeof String.prototype.startsWith != 'function') {
String.prototype.startsWith = function (str) {
return this.slice(0, str.length) == str;
};
}
// Checks that string ends with the specific string...
if (typeof String.prototype.endsWith != 'function') {
String.prototype.endsWith = function (str) {
return this.slice(-str.length) == str;
};
}
Et utilisez-le comme ceci:
var str = 'Hello World';
if( str.startsWith('Hello') ) {
// your string starts with 'Hello'
}
if( str.endsWith('World') ) {
// your string ends with 'World'
}
ES6 prend désormais en charge la méthode startsWith()
et endsWith()
pour vérifier le début et la fin de string
s. Si vous souhaitez prendre en charge les moteurs pré-es6, vous pouvez envisager d’ajouter une des méthodes suggérées au prototype String
.
if (typeof String.prototype.startsWith != 'function') {
String.prototype.startsWith = function (str) {
return this.match(new RegExp("^" + str));
};
}
if (typeof String.prototype.endsWith != 'function') {
String.prototype.endsWith = function (str) {
return this.match(new RegExp(str + "$"));
};
}
var str = "foobar is not barfoo";
console.log(str.startsWith("foob"); // true
console.log(str.endsWith("rfoo"); // true