Câu hỏi Cắt chuỗi trong JavaScript?


Làm thế nào để cắt một chuỗi trong JavaScript?


1235
2018-01-31 15:12


gốc


Điều đáng nói đến hai năm sau khi câu hỏi này được hỏi rằng String.trim () được thêm vào nguyên bản trong JavaScript 1.8.1 / ECMAScript 5, được hỗ trợ trong: Firefox 3.5+, Chrome / Safari 5+, IE9 + (chỉ ở chế độ Chuẩn!) Xem Câu trả lời của scunliffe: stackoverflow.com/a/8522376/8432 - wweicker
String.trim() cũng hoạt động tốt trong hộp trong Node.js. - Brad
Để nitpick: String.trim(), phương thức lớp, không tồn tại trong ES5 / Node.js; thay thế, String.prototype.trim(), phương pháp thể hiện, tồn tại. Sử dụng: ' foo '.trim(), không phải String.trim(' foo '). - frontendbeauty
OMG, năm 2013 và IE9 ở chế độ compat không có phương thức trim () trên String! - dbrin
Đáng chú ý là trong jQuery, $.trim(str) luôn có sẵn. - Sygmoral


Các câu trả lời:


Tất cả các trình duyệt kể từ IE9 + đều có trim().

Đối với những trình duyệt không hỗ trợ trim(), bạn có thể sử dụng polyfill này từ MDN:

if (!String.prototype.trim) {
    (function() {
        // Make sure we trim BOM and NBSP
        var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
        String.prototype.trim = function() {
            return this.replace(rtrim, '');
        };
    })();
}

Xem này:

String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g, '');};

String.prototype.ltrim=function(){return this.replace(/^\s+/,'');};

String.prototype.rtrim=function(){return this.replace(/\s+$/,'');};

String.prototype.fulltrim=function(){return this.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g,'').replace(/\s+/g,' ');};

857
2018-01-31 15:26



Đáng chú ý là trong jQuery, $.trim(str) luôn có sẵn. - Sygmoral


Cắt từ jQuery thuận tiện nếu bạn đã sử dụng khung công tác đó.

$.trim('  your string   ');

Tôi có xu hướng sử dụng jQuery thường xuyên, do đó, cắt tỉa chuỗi với nó là tự nhiên đối với tôi. Nhưng có thể có phản ứng ngược với jQuery ngoài kia? :)


475
2018-01-31 15:16



điều này chỉ trims khoảng trắng (newline) .. nó không hoạt động như php trim, nơi bạn có thể cắt nhân vật cũng - Jeffz


Mặc dù có một loạt các câu trả lời đúng ở trên, cần lưu ý rằng String đối tượng trong JavaScript có nguồn gốc .trim() phương thức tính bằng ECMAScript 5. Vì vậy, lý tưởng bất kỳ cố gắng để thử nghiệm các phương pháp trim nên thực sự kiểm tra xem nếu nó đã tồn tại đầu tiên.

if(!String.prototype.trim){  
  String.prototype.trim = function(){  
    return this.replace(/^\s+|\s+$/g,'');  
  };  
}

Đã thêm nguyên bản vào: JavaScript 1.8.1 / ECMAScript 5

Do đó được hỗ trợ trong:

Firefox: 3,5+

Safari: 5+

Trình duyệt web IE: IE9 + (chỉ ở chế độ Chuẩn!) http://blogs.msdn.com/b/ie/archive/2010/06/25/enhanced-scripting-in-ie9-ecmascript-5-support-and-more.aspx

Chrome: 5+

Opera: 10.5+

Bảng hỗ trợ ECMAScript 5: http://kangax.github.com/es5-compat-table/


160
2017-12-15 15:21





nhiều triển khai có thể được sử dụng. Rõ ràng nhất dường như là một cái gì đó như thế này:

String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g, "");
};

" foo bar ".trim();  // "foo bar"

124
2018-01-31 15:14





Phiên bản đơn giản tại đây Chức năng chung cho cắt JavaScript là gì?

function trim(str) {
        return str.replace(/^\s+|\s+$/g,"");
}

45
2018-01-31 15:15





Tôi biết câu hỏi này đã được hỏi ba năm trở lại. Bây giờ,String.trim() đã được thêm vào nguyên bản trong JavaScript.Đối với một trường hợp, bạn có thể cắt trực tiếp như sau,

document.getElementById("id").value.trim();

27
2018-01-25 11:02



Điều này sẽ không làm việc trong các phiên bản tức là, sử dụng jQuery methd $ .trim (str) nếu bạn có thể - Ben Taliadoros


Flagrant Badassery có 11 phần khác nhau với thông tin điểm chuẩn:

http://blog.stevenlevithan.com/archives/faster-trim-javascript

Dựa trên regexp không đáng ngạc nhiên là chậm hơn so với vòng lặp truyền thống.


Đây là cá nhân của tôi. Mã này đã cũ! Tôi đã viết nó cho JavaScript1.1 và Netscape 3 và nó đã được cập nhật một chút kể từ đó. (Ban đầu được sử dụng String.charAt)

/**
 *  Trim string. Actually trims all control characters.
 *  Ignores fancy Unicode spaces. Forces to string.
 */
function trim(str) {
    str = str.toString();
    var begin = 0;
    var end = str.length - 1;
    while (begin <= end && str.charCodeAt(begin) < 33) { ++begin; }
    while (end > begin && str.charCodeAt(end) < 33) { --end; }
    return str.substr(begin, end - begin + 1);
}

20
2018-03-10 13:38



Hiện tại có 12. nhờ phản hồi. - Ross


Nếu bạn đang sử dụng jQuery, hãy sử dụng jQuery.trim() chức năng. Ví dụ:

if( jQuery.trim(StringVariable) == '')

20
2017-08-18 13:38