Saya memiliki string dengan spasi putih tambahan, setiap kali ada lebih dari satu spasi putih yang saya inginkan hanya satu.
Siapa saja? Saya mencoba mencari google, tetapi tidak ada yang berhasil untuk saya.
Terima kasih
Saya memiliki string dengan spasi putih tambahan, setiap kali ada lebih dari satu spasi putih yang saya inginkan hanya satu.
Siapa saja? Saya mencoba mencari google, tetapi tidak ada yang berhasil untuk saya.
Terima kasih
Jawaban:
Sesuatu seperti ini:
var s = " a b c ";
console.log(
s.replace(/\s+/g, ' ')
)
Anda dapat menambah String untuk menerapkan perilaku ini sebagai metode, seperti pada:
String.prototype.killWhiteSpace = function() {
return this.replace(/\s/g, '');
};
String.prototype.reduceWhiteSpace = function() {
return this.replace(/\s+/g, ' ');
};
Ini sekarang memungkinkan Anda untuk menggunakan formulir elegan berikut untuk menghasilkan string yang Anda inginkan:
"Get rid of my whitespaces.".killWhiteSpace();
"Get rid of my extra whitespaces".reduceWhiteSpace();
menggunakan ekspresi reguler dengan fungsi ganti berfungsi:
string.replace(/\s/g, "")
var s = ' a b word word. word, wordword word ';
// with ES5:
s = s.split(' ').filter(function(n){ return n != '' }).join(' ');
console.log(s); // "a b word word. word, wordword word"
// or ES6:
s = s.split(' ').filter(n => n).join(' ');
console.log(s); // "a b word word. word, wordword word"
Ini membagi string dengan spasi putih , menghapusnya semua item array kosong dari array (yang lebih dari satu spasi), dan menggabungkan semua kata lagi menjadi string, dengan spasi putih tunggal di antara mereka.
Saya kira Anda mencari untuk menghapus spasi dari awal dan / atau akhir string (daripada menghapus semua spasi?
Jika itu masalahnya, Anda memerlukan regex seperti ini:
mystring = mystring.replace(/(^\s+|\s+$)/g,' ');
Ini akan menghapus semua spasi dari awal atau akhir string. Jika Anda hanya ingin memotong spasi dari akhir, maka regex akan terlihat seperti ini sebagai gantinya:
mystring = mystring.replace(/\s+$/g,' ');
Semoga itu bisa membantu.
''
bukan ' '
.
jQuery.trim () berfungsi dengan baik.
Saya tahu saya tidak boleh necromancy pada suatu subjek, tetapi mengingat rincian pertanyaannya, saya biasanya mengembangkannya menjadi:
Untuk ini, saya menggunakan kode seperti ini (tanda kurung pada regexp pertama ada hanya untuk membuat kode sedikit lebih mudah dibaca ... regexps bisa menyebalkan kecuali Anda terbiasa dengan mereka):
s = s.replace(/^(\s*)|(\s*)$/g, '').replace(/\s+/g, ' ');
Alasan ini berfungsi adalah bahwa metode pada String-objek mengembalikan objek string di mana Anda dapat memanggil metode lain (seperti jQuery & beberapa perpustakaan lain). Cara yang jauh lebih ringkas untuk kode jika Anda ingin menjalankan beberapa metode pada satu objek secara berturut-turut.
var x = "Tes Tes Tes" .split ("") .join (""); waspada (x);
Coba ini.
var string = " string 1";
string = string.trim().replace(/\s+/g, ' ');
hasilnya akan
string 1
Apa yang terjadi di sini adalah bahwa ia akan memangkas ruang luar menggunakan terlebih dahulu trim()
kemudian memangkas menggunakan ruang dalam .replace(/\s+/g, ' ')
.
Jika Anda ingin membatasi pengguna untuk memberikan ruang kosong pada nama, buat saja pernyataan if dan berikan kondisinya. seperti yang saya lakukan:
$j('#fragment_key').bind({
keypress: function(e){
var key = e.keyCode;
var character = String.fromCharCode(key);
if(character.match( /[' ']/)) {
alert("Blank space is not allowed in the Name");
return false;
}
}
});
Bagaimana dengan yang ini?
"my test string \t\t with crazy stuff is cool ".replace(/\s{2,9999}|\t/g, ' ')
output "my test string with crazy stuff is cool "
Yang ini juga menghilangkan semua tab
\s
. Regex yang tidak perlu kompleks, mungkin juga hanya menulis /\s+/g
.