W javascript, jak zrobić prawo przyciąć?javascript trzeba zrobić prawą przycinanie
mam następujące:
var s1 = "this is a test~";
var s = s1.rtrim('~')
ale nie był udany
W javascript, jak zrobić prawo przyciąć?javascript trzeba zrobić prawą przycinanie
mam następujące:
var s1 = "this is a test~";
var s = s1.rtrim('~')
ale nie był udany
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
Idealne, dzięki! –
Rozwiązanie za pomocą wyrażenia regularnego:
"hi there~".replace(/~*$/, "")
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;
}
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);
Jest to stary, wiem. Ale nie widzę, co jest nie tak z substr ...?
function rtrim(str, length) {
return str.substr(0, str.length - length);
}
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
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 '
Najlepsze trafienie w google: http://blog.stevenlevithan.com/archives/faster-trim-javascript – Tessmore