Bagaimana cara memotong string dalam JavaScript?
Semua browser karena IE9+ memiliki trim()
metode untuk string.
Bagi browser yang tidak mendukung trim()
, anda dapat menggunakan ini polyfill dari 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, '');
};
})();
}
Yang mengatakan, jika menggunakan jQuery
, $.trim(str)
juga tersedia dan menangani undefined/null.
Melihat ini:
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,' ');};
Trim dari jQuery lebih mudah jika anda sudah menggunakan kerangka itu.
$.trim(' your string ');
Saya cenderung menggunakan jQuery sering, sehingga pemangkasan string dengan itu wajar bagi saya. Tapi itu's mungkin yang ada adalah reaksi terhadap jQuery di luar sana? :)
Meskipun ada banyak jawaban yang benar di atas, perlu dicatat bahwa String
objek dalam JavaScript memiliki native .trim()
metode sebagai ECMAScript 5. Dengan demikian idealnya setiap upaya untuk prototipe trim metode yang benar-benar harus memeriksa untuk melihat apakah itu sudah ada lebih dulu.
if(!String.prototype.trim){
String.prototype.trim = function(){
return this.replace(/^\s+|\s+$/g,'');
};
}
Menambahkan native di: JavaScript 1.8.1 / ECMAScript 5
Dengan demikian didukung dalam:
Firefox: 3.5+
Safari: 5+
Internet Explorer: IE9+ (dalam modus Standar hanya!) 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+
ECMAScript 5 Dukungan Tabel: http://kangax.github.com/es5-compat-table/
Versi sederhana di sini Apa fungsi umum untuk JavaScript trim?
function trim(str) {
return str.replace(/^\s+|\s+$/g,"");
}
Jika anda menggunakan jQuery, gunakan jQuery.trim()
fungsi. Misalnya:
if( jQuery.trim(StringVariable) == '')
Mencolok Badassery memiliki 11 trim yang berbeda dengan acuan informasi:
http://blog.stevenlevithan.com/archives/faster-trim-javascript
Non-mengejutkan regexp-based yang lebih lambat dari yang tradisional loop.
Berikut ini adalah saya pribadi. Kode ini sudah tua! Saya menulis ini untuk JavaScript1.1 dan Netscape 3 dan telah hanya sedikit diperbarui sejak. (Asli String yang digunakan.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);
}
Menggunakan Native JavaScript Metode: String.trimLeft()
, String.trimRight()
, dan String.trim()
.
String.trim()
didukung dalam IE9+, dan semua browser utama lainnya:
' Hello '.trim() //-> 'Hello'
String.trimLeft()
dan String.trimRight()
non-standar, tetapi didukung di semua browser utama kecuali IE]4
' Hello '.trimLeft() //-> 'Hello '
' Hello '.trimRight() //-> ' Hello'
Dukungan IE lebih mudah dengan polyfill namun:
if (!''.trimLeft) {
String.prototype.trimLeft = function() {
return this.replace(/^\s+/,'');
};
String.prototype.trimRight = function() {
return this.replace(/\s+$/,'');
};
if (!''.trim) {
String.prototype.trim = function() {
return this.replace(/^\s+|\s+$/g, '');
};
}
}
Sekarang anda dapat menggunakan hari string.trim() yang berasal dari Javascript pelaksanaan
var orig = " foo ";
console.log(orig.trim());//foo
Lihat juga
String.prototype.trim = String.prototype.trim || function () {
return this.replace(/^\s+|\s+$/g, "");
};
String.prototype.trimLeft = String.prototype.trimLeft || function () {
return this.replace(/^\s+/, "");
};
String.prototype.trimRight = String.prototype.trimRight || function () {
return this.replace(/\s+$/, "");
};
String.prototype.trimFull = String.prototype.trimFull || function () {
return this.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g, "").replace(/\s+/g, " ");
};
Tanpa malu-malu dicuri dari Matt duereg.
Trim kode dari angular js proyek
var trim = (function() {
// if a reference is a `String`.
function isString(value){
return typeof value == 'string';
}
// native trim is way faster: http://jsperf.com/angular-trim-test
// but IE doesn't have it... :-(
// TODO: we should move this into IE/ES5 polyfill
if (!String.prototype.trim) {
return function(value) {
return isString(value) ?
value.replace(/^\s*/, '').replace(/\s*$/, '') : value;
};
}
return function(value) {
return isString(value) ? value.trim() : value;
};
})();
dan menyebutnya sebagai trim(" hello ")
gunakan hanya kode
var str = " Hello World! ";
alert(str.trim());
Browser mendukung
Feature Chrome Firefox Internet Explorer Opera Safari Edge
Basic support (Yes) 3.5 9 10.5 5 ?
Untuk browser lama menambah prototipe
if (!String.prototype.trim) {
String.prototype.trim = function () {
return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
};
}
Saat ini, cukup banyak setiap browser mendukung String.prototipe.trim()
.
Anda dapat menggunakannya seperti ini :
var origStr = ' foo ';
var newStr = origStr.trim(); // Value of newStr becomes 'foo'
Dalam kasus anda mungkin masih perlu dukungan kuno browser yang doesn't mendukung fitur ini, hal ini a polyfill yang disarankan oleh MDN :
if (!String.prototype.trim) {
String.prototype.trim = function () {
return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
};
}
if(!String.prototype.trim){
String.prototype.trim = function(){
return this.replace(/^\s+|\s+$/gm,'');
};
}
Dari jawaban sebelumnya, hal itu berbeda menambahkan bendera m
.
Bendera m
akan mencari teks dari beberapa linear. Dalam mode ini, menandai awal dan akhir dari pola (^
$
) dimasukkan sebelum dan sesudah karakter newline (\n
).
Saya telah menulis fungsi ini untuk memangkas, ketika .trim() fungsi ini tidak tersedia di JS jalan kembali pada tahun 2008. Beberapa browser lama tidak mendukung .trim() fungsi dan aku berharap fungsi ini dapat membantu seseorang.
FUNGSI TRIM
function trim(str)
{
var startpatt = /^\s/;
var endpatt = /\s$/;
while(str.search(startpatt) == 0)
str = str.substring(1, str.length);
while(str.search(endpatt) == str.length-1)
str = str.substring(0, str.length-1);
return str;
}
Penjelasan: fungsi trim() menerima sebuah objek string dan menghapus setiap awal dan trailing spasi putih (spasi,tab dan baris baru) dan kembali dipangkas string. Anda dapat menggunakan fungsi ini untuk memangkas form input untuk memastikan data yang valid untuk dikirim.
Fungsi dapat dipanggil dengan cara berikut sebagai contoh.
form.elements[i].value = trim(form.elements[i].value);