Belirli bir html dizesinden önde gelen ve sondaki beyaz boşluklar nasıl kaldırılır?


178

Aşağıdaki HTML dizesini aldım. Bu dizeden önde gelen ve arkadaki boşlukları kaldırmak için JavaScript'teki örnek kod nedir?

<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>


Gerçek sorunun nedir? Belgeye düğüm eklemeden önce boşlukları kaldırmak istiyor musunuz?
Rob W

Önde gelen tüm beyaz alanları ve arkadaki tüm beyaz alanları kaldırmak istiyorum. C # 'daki Trim yöntemini çok beğeniyorum, ancak beyaz boşlukları bile kaldırıyor.
Sunil

Bu yüzden örneğimde, nihayet kırptıktan sonra aşağıdakileri almalıyım: JavaScript kullanarak kırpma <br /> <br /> <br /> <br /> tüm önde gelen ve sondaki beyaz boşlukları
Sunil

@Sunil Bunu çözdüğünüzü bilmiyorum, ancak şu çözümlerden birini deneyebilirsiniz: stackoverflow.com/questions/16708158/…
Chris Baker

Yanıtlar:


245

Dize yöntemine bakın 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);

Düzenle

Diğer yorumlarda belirtildiği gibi, normal ifade yaklaşımını kullanmak mümkündür. trimYöntem etkili bir regex için sadece takma adıdır:

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

... bu, yöntemi havuzun sığ ucunda yüzmeye devam eden tarayıcılar için yerel prototipe enjekte edecektir.


3
Ben normal bir şekilde tercih ederim, çünkü tüm tarayıcılarda ( öksürük öksürük IE <9) desteklenmez.
PeeHaa

2
Kırpma yöntemi beyaz boşlukları değil sadece boşlukları kırpacaktır. Yani aradığım şey bu değil.
Sunil

8
"Beyaz boşluklar" ne düşündüğünüzden emin değilim, ancak trim sadece boşluk karakterini değil genel olarak boşlukları (satırsonu, boşluk, sekme vb.) Kaldıracaktır.
bsa

2
@bsa "HTML oluşturma sonuçlarında görsel olarak boş alanlarda" olduğu gibi görsel anlamda "beyaz boşluk" anlamına geldiğini anladım ve daha sonra " bretiketlerin neden olduğu yeni satırlar hariç" üzerine bir yorum ekledi .
Chris Baker

2
170 yukarı oy içeren bir yanıtta neden onay işareti yok? SO bazen beni karıştırıyor.
tcoulson

63
var str = "  my awesome string   "
str.trim();    

eski tarayıcılar için normal ifadeyi kullanın

str = str.replace(/^[ ]+|[ ]+$/g,'')
//str = "my awesome string" 

2
"[]", "" ile tamamen aynı. Tam olarak bir karakterin karakter gruplaması .. iyi ... tam olarak bir karakterdir.
Flimzy

2
@Flimzy: Evet, yazmak daha mantıklı olurdu [\t\n\ ]veya \sbunun yerine [ ]hiçbir anlamı yok.
erik

11
string.replace(/^\s+|\s+$/g, "");

Soruyu okuyun, &nbsp;sıradan bir boşluk yerine kullanılır. Bunun üzerine, boşluk bir etiketin içinde bulunur.
Rob W

6

Kod dosyası gibi çok satırlı bir dizeyle çalışıyorsanız:

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

Ve bu sonucu elde etmek için tüm önde gelen satırları değiştirmek istersiniz:

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

multilineBayrağı normal ifadenize eklemeli ^ve $satır satır eşleştirmelisiniz:

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

Dokümanlardaki alakalı teklif :

"M" bayrağı, çok satırlı bir giriş dizesinin birden çok satır olarak ele alınması gerektiğini belirtir. Örneğin, "m" kullanılırsa, "^" ve "$" tüm dizenin yalnızca başlangıcında veya sonunda eşleşmekten dize içindeki herhangi bir satırın başına veya sonuna değişir.


4

Bunun çok eski bir soru olduğunu biliyorum ama hala kabul edilmiş bir cevabı yok. Aşağıdaki kaldırılmasını istediğinizi görüyorum: "boş" olan html etiketleri ve html dizesine dayalı beyaz boşluklar.

Aradığınız çıktı için yorumunuza dayalı bir çözüm buldum:

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() baştaki ve sondaki boşlukları kaldırır

.replace(/&nbsp;/g, '') kaldırır &nbsp;

.replace(/<[^\/>][^>]*><\/[^>]+>/g, "")); boş etiketleri kaldırır


3
var trim = your_string.replace(/^\s+|\s+$/g, '');

1
<br /> veya <p> & nbsp; & nbsp; </p> <div> & nbsp; </div> gibi beyaz alanları kaldıracak mı? Basit alanları birleştirmek sorun değil. Ben peşimde olan beyaz boşluk kaldırma.
Sunil

boşluk kaldıracak
user2086641

3

01). Yalnızca önde gelen ve arkadaki boşlukları kaldırmanız gerekirse bunu kullanın:

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

bu "No.255 Colombo" dizesini döndürür

02). Tüm beyaz alanı kaldırmanız gerekiyorsa bunu kullanın:

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

bu "No.255Colombo" dizesini döndürür

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.