En javascript, comment faire une bonne garniture?
J'ai ce qui suit:
var s1 = "this is a test~";
var s = s1.rtrim('~')
mais n'a pas réussi
Utilisez un RegExp. N'oubliez pas d'échapper aux caractères spéciaux.
s1 = s1.replace(/~+$/, ''); //$ marks the end of a string
// ~+$ means: all ~ characters at the end of a string
Vous pouvez modifier le prototype String si vous le souhaitez. La modification du prototype String est généralement mal vue, mais je préfère personnellement cette méthode, car elle rend le code plus propre à mon humble avis.
String.prototype.rtrim = function(s) {
return this.replace(new RegExp(s + "*$"),'');
};
Appelez ensuite ...
var s1 = "this is a test~";
var s = s1.rtrim('~');
alert(s);
Une solution utilisant une expression régulière:
"hi there~".replace(/~*$/, "")
Il n'y a pas de fonctions trim, ltrim ou rtrim en Javascript. De nombreuses bibliothèques les fournissent, mais elles ressemblent généralement à:
str.replace(/~*$/, '');
Pour les coupes à droite, ce qui suit est généralement plus rapide qu'une expression régulière en raison de la façon dont l'expression régulière traite les caractères de fin dans la plupart des navigateurs:
function rtrim(str, ch)
{
for (i = str.length - 1; i >= 0; i--)
{
if (ch != str.charAt(i))
{
str = str.substring(0, i + 1);
break;
}
}
return str;
}
IMO, c'est la meilleure façon de faire une coupe droite/gauche et donc, d'avoir une fonctionnalité complète pour la coupe (puisque javascript prend en charge string.trim
nativement)
String.prototype.rtrim = function (s) {
if (s == undefined)
s = '\\s';
return this.replace(new RegExp("[" + s + "]*$"), '');
};
String.prototype.ltrim = function (s) {
if (s == undefined)
s = '\\s';
return this.replace(new RegExp("^[" + s + "]*"), '');
};
Exemple d'utilisation:
var str1 = ' jav '
var r1 = mystring.trim(); // result = 'jav'
var r2 = mystring.rtrim(); // result = ' jav'
var r3 = mystring.rtrim(' v'); // result = ' ja'
var r4 = mystring.ltrim(); // result = 'jav '