web-dev-qa-db-fra.com

javascript doit faire une bonne garniture

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

28
Nate Pet

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
67
Rob W

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); 
4
JP Richardson

Une solution utilisant une expression régulière:

"hi there~".replace(/~*$/, "")
3
wutz

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;
}
3
Scott A

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 '
2
Javid