Bagaimana menghapus spasi putih awal dan akhir dari string html yang diberikan?

177

Saya memiliki string HTML berikut. Apa yang akan menjadi kode sampel dalam JavaScript untuk menghapus spasi putih awal dan akhir dari string ini?

<p>&nbsp;&nbsp;</p>
<div>&nbsp;</div>
Trimming using JavaScript<br />
<br />
<br />
<br />
all leading and trailing white spaces
<p>&nbsp;&nbsp;</p>
<div>&nbsp;</div>
Sunil
sumber
lihat ini
musefan
Apa masalah Anda yang sebenarnya? Apakah Anda ingin menghapus spasi putih sebelum memasukkan node dalam dokumen?
Rob W
Saya ingin menghapus semua spasi putih utama dan semua spasi putih tertinggal. Sangat saya suka metode Trim dalam C # kecuali bahwa itu menghapus spasi putih.
Sunil
Jadi dalam contoh saya, saya akhirnya harus mendapatkan yang berikut setelah pemangkasan: Memotong menggunakan JavaScript <br /> <br /> <br /> <br /> semua ruang putih utama dan tertinggal
Sunil
@ Sunil Saya tidak tahu apakah Anda pernah memecahkan ini, tetapi Anda dapat mencoba salah satu dari solusi ini: stackoverflow.com/questions/16708158/…
Chris Baker

Jawaban:

244

Lihat metode String trim()- https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/Trim

var myString = '  bunch    of <br> string data with<p>trailing</p> and leading space   ';
myString = myString.trim();
// or myString = String.trim(myString);

Edit

Seperti disebutkan dalam komentar lain, adalah mungkin untuk menggunakan pendekatan regex. The trimmetode adalah efektif hanya sebuah alias untuk regex:

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

... ini akan menyuntikkan metode ke prototipe asli untuk browser yang masih berenang di ujung kolam yang dangkal.

Chris Baker
sumber
3
Saya lebih suka cara regex, karena itu tidak didukung di semua browser ( batuk IE <9).
PeeHaa
2
Metode trim tidak akan memotong spasi putih, tetapi hanya spasi. Jadi bukan itu yang saya cari.
Sunil
8
Saya tidak yakin apa yang Anda pikirkan "spasi putih", tetapi trim akan menghapus spasi putih secara umum (baris baru, spasi, tab dll), bukan hanya karakter spasi.
bsa
2
@ bsa saya mulai mengerti maksudnya "ruang putih" dalam arti visual, seperti dalam "area kosong secara visual dalam hasil rendering HTML", dan kemudian dia menambahkan dalam komentar di atas "kecuali baris baru yang disebabkan oleh brtag".
Chris Baker
2
mengapa tidak ada tanda centang pada jawaban dengan 170 upvotes? SO terkadang membingungkan saya.
tcoulson
63
var str = "  my awesome string   "
str.trim();    

untuk browser lama, gunakan regex

str = str.replace(/^[ ]+|[ ]+$/g,'')
//str = "my awesome string" 
Jhankar Mahbub
sumber
2
"[]" persis sama dengan "". Pengelompokan karakter tepat satu karakter adalah .. yah ... persis satu karakter.
Flimzy
2
@Flimzy: Ya, itu akan lebih masuk akal untuk menulis [\t\n\ ]atau hanya \sbukan [ ]yang tidak masuk akal.
erik
11
string.replace(/^\s+|\s+$/g, "");
Sandeep Manne
sumber
Baca pertanyaannya, &nbsp;digunakan sebagai ganti spasi putih biasa. Di atas ini, spasi putih terkandung dalam sebuah tag.
Rob W
6

Jika Anda bekerja dengan string multiline, seperti file kode:

<html>
    <title>test</title>
    <body>
        <h1>test</h1>
    </body>
</html>

Dan ingin mengganti semua lini terkemuka, untuk mendapatkan hasil ini:

<html>
<title>test</title>
<body>
<h1>test</h1>
</body>
</html>

Anda harus menambahkan multilinebendera ke regex Anda, ^dan $mencocokkan baris demi baris:

string.replace(/^\s+|\s+$/gm, '');

Kutipan yang relevan dari dokumen :

Bendera "m" menunjukkan bahwa string input multiline harus diperlakukan sebagai beberapa baris. Misalnya, jika "m" digunakan, "^" dan "$" berubah dari pencocokan hanya pada awal atau akhir dari seluruh string menjadi awal atau akhir dari setiap baris dalam string.

Jaime Gómez
sumber
4

Saya tahu ini adalah pertanyaan yang sangat lama tetapi masih belum memiliki jawaban yang diterima. Saya melihat bahwa Anda ingin yang berikut dihapus: tag html yang "kosong" dan spasi putih berdasarkan string html.

Saya datang dengan solusi berdasarkan komentar Anda untuk output yang Anda cari:

Trimming using JavaScript<br /><br /><br /><br />all leading and trailing white spaces 

var str = "<p>&nbsp;&nbsp;</p><div>&nbsp;</div>Trimming using JavaScript<br /><br /><br /><br />all leading and trailing white spaces<p>&nbsp;&nbsp;</p><div>&nbsp;</div>";
console.log(str.trim().replace(/&nbsp;/g, '').replace(/<[^\/>][^>]*><\/[^>]+>/g, ""));

.trim() menghapus spasi putih depan dan belakang

.replace(/&nbsp;/g, '') menghapus &nbsp;

.replace(/<[^\/>][^>]*><\/[^>]+>/g, "")); menghapus tag kosong

Anthony
sumber
3
var trim = your_string.replace(/^\s+|\s+$/g, '');
SenorAmor
sumber
1
Apakah akan menghapus spasi putih seperti <br /> atau <p> & nbsp; & nbsp; </p> <div> & nbsp; </div>? Mempertahankan ruang sederhana bukanlah masalah. Ini adalah penghapusan ruang putih yang saya kejar.
Sunil
apakah itu akan menghapus ruang putih
user2086641
3

01). Jika Anda perlu menghapus hanya spasi putih depan dan belakang, gunakan ini:

var address = "  No.255 Colombo  "
address.replace(/^[ ]+|[ ]+$/g,'');

ini akan mengembalikan string "No.255 Colombo"

02). Jika Anda perlu menghapus semua ruang putih gunakan ini:

var address = "  No.255 Colombo  "
address.replace(/\s/g,"");

ini akan mengembalikan string "No.255Colombo"

Chamila Maddumage
sumber