Ekstra boşluklara sahip dizelerim var, her seferinde birden fazla boşluk olduğunda sadece bir tane olmasını istiyorum.
Kimse? Google'da arama yapmayı denedim, ancak hiçbir şey benim için işe yaramadı.
Teşekkürler
Ekstra boşluklara sahip dizelerim var, her seferinde birden fazla boşluk olduğunda sadece bir tane olmasını istiyorum.
Kimse? Google'da arama yapmayı denedim, ancak hiçbir şey benim için işe yaramadı.
Teşekkürler
Yanıtlar:
Bunun gibi bir şey:
var s = " a b c ";
console.log(
s.replace(/\s+/g, ' ')
)
Aşağıdaki gibi, bu davranışları yöntem olarak uygulamak için Dize'yi artırabilirsiniz:
String.prototype.killWhiteSpace = function() {
return this.replace(/\s/g, '');
};
String.prototype.reduceWhiteSpace = function() {
return this.replace(/\s+/g, ' ');
};
Bu, artık istediğiniz dizeleri üretmek için aşağıdaki zarif formları kullanmanızı sağlar:
"Get rid of my whitespaces.".killWhiteSpace();
"Get rid of my extra whitespaces".reduceWhiteSpace();
replace işleviyle birlikte normal bir ifade kullanmak hile yapar:
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"
Dizeyi boşluklara böler, dizideki tüm boş dizi öğelerini (tek bir boşluktan daha fazla olanlar) kaldırır ve aralarında tek bir boşluk bulunan tüm kelimeleri bir dizgiye tekrar ekler.
Sanırım dizenin başından ve / veya sonundan boşluk bırakmak istediğinizi varsayalım ( tüm boşlukları kaldırmak yerine ?
Bu durumda, böyle bir regex'e ihtiyacınız olacak:
mystring = mystring.replace(/(^\s+|\s+$)/g,' ');
Bu, dizenin başından veya sonundan tüm boşlukları kaldıracaktır. Yalnızca sondaki boşlukları kırpmak istiyorsanız, normal ifade bunun yerine şöyle görünür:
mystring = mystring.replace(/\s+$/g,' ');
Umarım yardımcı olur.
''
yerine yapılmalıdır ' '
.
jQuery.trim () iyi çalışıyor.
Bir konuda büyücülük yapmamam gerektiğini biliyorum, ancak sorunun ayrıntıları göz önüne alındığında, genellikle şu anlama gelir:
Bunun için böyle bir kod kullanın (ilk regexp üzerindeki parantez sadece kodu biraz daha okunabilir hale getirmek için vardır ... regexps onlara aşina değilseniz bir ağrı olabilir):
s = s.replace(/^(\s*)|(\s*)$/g, '').replace(/\s+/g, ' ');
Bunun çalışmasının nedeni, String nesnesi üzerindeki yöntemlerin üzerinde başka bir yöntem çağırabileceğiniz bir dize nesnesi döndürmesidir (jQuery ve diğer bazı kütüphaneler gibi). Tek bir nesne üzerinde art arda birden çok yöntem yürütmek istiyorsanız kodlamanın çok daha kompakt bir yolu.
var x = "Test Test Test" .split ("") .join (""); uyarısı (x);
Bunu dene.
var string = " string 1";
string = string.trim().replace(/\s+/g, ' ');
sonuç olacak
string 1
Burada olan şey, önce kullanarak dış boşlukları, trim()
sonra kullanarak iç boşlukları kırpmasıdır .replace(/\s+/g, ' ')
.
Kullanıcının adında boşluk bırakmasını kısıtlamak istiyorsanız, bir if ifadesi oluşturun ve koşulu verin. benim yaptığım gibi:
$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;
}
}
});
Buna ne dersin?
"my test string \t\t with crazy stuff is cool ".replace(/\s{2,9999}|\t/g, ' ')
çıktılar "my test string with crazy stuff is cool "
Bu da herhangi bir sekmeden kurtulur
\s
. Gereksiz yere karmaşık normal ifade, sadece yazmak da olabilir /\s+/g
.