2011-11-15 10 views

Odpowiedz

57

Użyj RegExp. Nie zapomnij uciec od znaków specjalnych.

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

Idealne, dzięki! –

2

Rozwiązanie za pomocą wyrażenia regularnego:

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

Nie ma stan, ltrim lub funkcje RTRIM w JavaScript. Wiele bibliotek zapewnić im, ale generalnie będą one wyglądać tak:

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

o prawo listew, co następuje zazwyczaj szybciej niż regex, ponieważ, jak regex oferty z postaciami końcowych w większości przeglądarek:

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

Możesz zmodyfikować prototyp String, jeśli chcesz. Modyfikowanie prototypu String jest zwykle niezadowolone, ale ja osobiście wolę tę metodę, ponieważ sprawia ona, że ​​kod jest czystszy IMHO.

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

Następnie zadzwonić ...

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

Jest to stary, wiem. Ale nie widzę, co jest nie tak z substr ...?

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

Jedyny problem polega na tym, że na końcu ciągu może znajdować się dowolna liczba znaków ... zamiast "to jest test", zdarzyło im się, że "to jest test ~~~" lub nawet brak "to jest test ". Twój przypadek działa jednak dobrze w celu przycięcia określonej liczby znaków z łańcucha, niezależnie od tego, jaka postać może być – bobkingof12vs

1

IMO jest to najlepszy sposób, aby zrobić/lewy wykończenia właściwej, a zatem o pełną funkcjonalność do przycinania (od javascript obsługuje string.trim natywnie) Przykładowa

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

Zastosowanie:

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 '