web-dev-qa-db-ja.com

JavaScriptは適切なトリムを行う必要があります

JavaScriptでは、どのように正しいトリムを行うのですか?

私は次のものを持っています:

    var s1 = "this is a test~";

     var s = s1.rtrim('~') 

しかし、成功しませんでした

28
Nate Pet

RegExpを使用します。特殊文字をエスケープすることを忘れないでください。

s1 = s1.replace(/~+$/, ''); //$ marks the end of a string
                            // ~+$ means: all ~ characters at the end of a string
67
Rob W

必要に応じて、Stringプロトタイプを変更できます。 Stringプロトタイプの変更は一般的に嫌われていますが、個人的にはこの方法を好むので、コードがよりきれいになります。

String.prototype.rtrim = function(s) { 
    return this.replace(new RegExp(s + "*$"),''); 
};

次に電話する...

var s1 = "this is a test~";
var s = s1.rtrim('~');
alert(s); 
4
JP Richardson

正規表現を使用したソリューション:

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

Javascriptにはtrim、ltrim、またはrtrim関数はありません。多くのライブラリはそれらを提供しますが、一般的には次のようになります。

str.replace(/~*$/, '');

右トリムの場合、ほとんどのブラウザで正規表現が終了文字をどのように処理するかにより、一般的に正規表現よりも高速です。

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これは、右/左トリムを行うための最良の方法であり、したがって、トリムの完全な機能を備えています(javascriptはstring.trimネイティブ)

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 + "]*"), '');
};

使用例:

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