Yanıtlar:
Bu?
str = str.replace(/\s/g, '');
Misal
var str = '/var/www/site/Brand new document.docx';
document.write( str.replace(/\s/g, '') );
Güncelleme: Bu soruya dayanarak , bu:
str = str.replace(/\s+/g, '');
daha iyi bir çözümdür. Aynı sonucu üretir, ancak daha hızlı yapar.
Normal İfade
\s
"boşluk" ifadesinin normal ifadesidir ve g
"global" bayraktır, yani TÜMÜ \s
(boşluklar) ile eşleşir .
İçin harika bir açıklama burada+
bulunabilir .
Yan not olarak, tek tırnak işaretleri arasındaki içeriği istediğiniz herhangi bir şeyle değiştirebilirsiniz, böylece boşlukları başka bir dizeyle değiştirebilirsiniz.
.replace(/\s+/g, '')
daha sık görüyorum . Bu ve cevabım arasında bir fark var mı?
.replace(' ','')
işe yarayacak izlenim altındaydım . Çok takdir!
+
herhangi biri ona kredi vermek istiyorsa sadece 60 oyu var stackoverflow.com/a/5964427/4258817
.replace('/\s+/g', '')
çünkü bu değişmez dizeyi bulmaya çalışacaktır. Bu beni daha önce attı ...
var a = b = " /var/www/site/Brand new document.docx ";
console.log( a.split(' ').join('') );
console.log( b.replace( /\s/g, '') );
Bunu yapmanın iki yolu!
EN KISA ve HIZLI :str.replace(/ /g, '');
Karşılaştırma:
İşte sonuçlarım - (2018.07.13) Chrome 67.0.3396 (64 bit), Safari 11.0.3 (13604.5.6), Firefox 59.0.2 (64 bit) üzerinde MacOs High Sierra 10.13.3:
OP sorusundaki örneklere benzer kısa dize
Tüm tarayıcılarda en hızlı çözüm / /g
(regexp1a) - Chrome 17.7M (işlem / sn), Safari 10.1M, Firefox 8.8M'dir. Tüm tarayıcılar için en yavaş split-join
çözüm oldu. Regexp olarak değiştirmek
\s
veya eklemek +
ya i
da regexp işlemi yavaşlatır.
Yaklaşık 3 milyon karakter dizisi için sonuçlar:
Makinenizde çalıştırabilirsiniz: https://jsperf.com/remove-string-spaces/1
@Rsplak cevabını takip ederek: aslında, split / join yolunu kullanmak regexp kullanmaktan daha hızlı. Performans testi durumuna bakın
Yani
var result = text.split(' ').join('')
daha hızlı çalışır
var result = text.replace(/\s+/g, '')
Küçük metinlerde bu geçerli değildir, ancak zamanın önemli olduğu durumlarda, örneğin metin analizörlerinde, özellikle kullanıcılarla etkileşime girerken, bu önemlidir.
Öte yandan, \s+
daha geniş alan karakterleri kullanır. İle arasında \n
ve \t
aynı zamanda maçları \u00a0
karakteri ve o nedir
kullanarak metin alırken, içinde açıktır textDomNode.nodeValue
.
Bu yüzden buradaki sonuç şu şekilde yapılabilir: sadece boşlukları değiştirmeniz gerekiyorsa ' '
, split / join kullanın. Sembol sınıfının farklı sembolleri varsa - kullanınreplace(/\s+/g, '')
way faster
. testi çalıştırdı ve Firefox 61'de sadece % 2.19 daha hızlı.
var input = '/var/www/site/Brand new document.docx';
//remove space
input = input.replace(/\s/g, '');
//make string lower
input = input.toLowerCase();
alert(input);
var output = '/var/www/site/Brand new document.docx'.replace(/ /g, "");
or
var output = '/var/www/site/Brand new document.docx'.replace(/ /gi,"");
Not: Boşlukları kaldırmak için 'g' veya 'gi' kullansanız da her ikisi de aynı şekilde davranır.
Değiştir işlevinde 'g' kullanırsak, tam eşleşmeyi kontrol eder. ancak 'gi' kullanırsak, büyük / küçük harf duyarlılığını yok sayar.
referans için buraya tıklayın .
Normal ifade + Değiştir ()
Normal ifade daha yavaş olabilse de, birçok kullanım durumunda geliştirici, hızın önemsiz olduğunu düşünerek aynı anda yalnızca birkaç dizeyi manipüle eder. / / / \ S / 'den daha hızlı olsa da,' \ s 'ye sahip olmak, başka bir geliştiriciye neler olup bittiğini belki de daha açık bir şekilde açıklar.
let string = '/var/www/site/Brand new document.docx';
let path = string.replace(/\s/g, '');
// path => '/var/www/site/Brandnewdocument.docx'
Böl () + Katıl ()
Split + Join kullanımı, dizenin daha fazla zincirlenmesini sağlar.
let string = '/var/www/site/Brand new document.docx';
let path => string.split('').map(char => /(\s|\.)/.test(char) ? '/' : char).join('');
// "/var/www/site/Brand/new/document/docx";
" ahm ed ".split('').filter(e => e.trim().length).join('')