JavaScriptでは、どのように正しいトリムを行うのですか?
私は次のものを持っています:
var s1 = "this is a test~";
var s = s1.rtrim('~')
しかし、成功しませんでした
RegExpを使用します。特殊文字をエスケープすることを忘れないでください。
s1 = s1.replace(/~+$/, ''); //$ marks the end of a string
// ~+$ means: all ~ characters at the end of a string
必要に応じて、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);
正規表現を使用したソリューション:
"hi there~".replace(/~*$/, "")
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;
}
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 '