2011-11-15 15 views

Trả lời

57

Sử dụng một RegExp. Đừng quên để thoát khỏi các nhân vật đặc biệt.

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

Hoàn hảo, cảm ơn! –

2

Một giải pháp sử dụng một biểu thức chính quy:

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

Không có trim, LTRIM, hoặc các chức năng rtrim trong Javascript. Nhiều thư viện cung cấp cho họ, nhưng nói chung họ sẽ giống như thế:

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

Đối với Trims đúng, sau đây nói chung là nhanh hơn so với một regex vì cách regex giao dịch với các nhân vật cuối trong hầu hết các trình duyệt:

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

Bạn có thể sửa đổi nguyên mẫu Chuỗi nếu muốn. Việc sửa đổi nguyên mẫu String thường bị cau mày, nhưng cá nhân tôi thích phương pháp này, vì nó làm cho mã IMHO sạch hơn.

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

Sau đó gọi ...

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

Đây là cũ, tôi biết. Nhưng tôi không thấy có vấn đề gì với chất nền ...?

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

Vấn đề duy nhất ở đây là có thể có bất kỳ số ký tự nào ở cuối chuỗi ... nói thay vì 'đây là test ~' chúng đã xảy ra để có 'đây là test ~~~' hoặc thậm chí không có 'đây là test'. Trường hợp của bạn tuy nhiên làm việc độc đáo để cắt tỉa một số lượng ký tự được đặt từ chuỗi, bất kể ký tự có thể là gì – bobkingof12vs

1

IMO đây là cách tốt nhất để làm một quyền cắt/trái và do đó, có một chức năng đầy đủ cho cắt tỉa (kể từ javascript hỗ trợ string.trim natively) ví dụ

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

Cách sử dụng:

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 ' 
Các vấn đề liên quan