2011-11-15 4 views

答えて

57

成功しませんでした。特殊文字をエスケープすることを忘れないでください。

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

完璧、ありがとう! –

2

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

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

はJavascriptにはトリム、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; 
} 
5
多くの図書館は、それらを提供するが、一般的に、彼らは次のようになります

必要に応じてStringプロトタイプを変更できます。文字列のプロトタイプを変更するのは一般的に嫌なことですが、私は個人的にはこのメソッドを好みます。

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

はその後...

var s1 = "this is a test~"; 
var s = s1.rtrim('~'); 
alert(s); 
-1

を呼び出すこれは私が知っている、古いです。しかし、私はsubstrに何が間違っているのか見ていないのですか?

function rtrim(str, length) { 
    return str.substr(0, str.length - length); 
} 
+0

ここでの唯一の問題は、文字列の末尾に任意の数の文字がある可能性があるということです。「this is test〜」の代わりに、「this is test ~~~」またはこれはまったくありません。テスト。あなたの場合は文字の種類にかかわらず、文字列から設定された文字数をトリミングするためにうまく動作します – bobkingof12vs

1

IMOこれは(ジャバスクリプトがネイティブ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 '