javascript dizesinde boşluk nasıl eklenir


cevap 1:

Başka bir yanıtın işaret ettiği gibi, tek bir karakterin "arasındaki boşluklar" çok az anlam ifade eder veya hiç anlamaz. Bununla birlikte, bu karakterin etrafında * boşluklar istiyorsanız, dikkate alınması gereken başka bir seçenek de Regex'tir.

Regex veya * Normal İfadeler *, sorgu biçimi olarak yararlı olan özel bir dize biçimidir. Normal ifade hakkında çok şey MDN'de okunabilir

dokümantasyon

ama güzelliği, çok güçlü, çok sağlam bir araç.

Örneğin, dizgeyi `/` karakterine bölersek, ardından bir “/” (boşluk-bölü-boşluk) ile yeniden birleştirirsek, potansiyel olarak bir sorunla karşılaşabiliriz. Ya kullanıcı zaten oraya boşluk eklemişse? Aralığı iki katına çıkardık.

Bunun yerine, normal ifadeyi kullanarak, "bu dizeyle, sorgumuz bir * kelimesi ile karşılaştığında hemen ardından bir bölü çizgisi ve hemen ardından başka bir kelime * (yani boşluksuz) ile karşılaştığında, sonra bunu bununla değiştirebiliriz. İşte bu nasıl görünebilir:

'kategori / alt kategori'.replace (/ (\ w +) \ / (\ w +) / g,' $ 1 / $ 2 ');

Ve bu kadar. Bu satır, test edilecek bir dizeyi tanımlar ("kategori / alt kategori"), ardından değiştir'i kullanır. Normal ifade o ilk kısımdır: `/ (\ w +) \ / ((\ w +) / g` ve bu, her şeyin en kafa karıştırıcı kısmıdır. Onu ayrıştıralım:

  • "/… / G` - bu normal bir ifade için bir işarettir ve" g "birden fazla karşılaşırsa hepsini değiştireceğini belirtir.
  • `(\ w +)` - bu aslında üç ayrı parçadır. `` (…) `, Bir * yakalama grubu * yaratarak, içindeki eşleştiğimiz şeyi hatırlamamıza izin verir. "\ W" bir kelime türü karakterini, "boşluk olmayan" karakterini belirtir. Ve "+", "bir satırdaki tüm kelime türü karakterlerini" (yani, boşluk karakterleri veya kontrol karakterleri arasında) söyler.
  • `\ /` - bu eğik çizgiyi eşleştirmemize izin verir. Bu bir kontrol karakteridir, bu yüzden ondan * kaçmamız * gerekir, bu da baştaki ters eğik çizgidir.

Yani toplamda. bu satırda "bul * ve hatırla * bir kelimeyi, hemen ardından bir bölü çizgisi ve ikinci bir * aynı zamanda hatırlanan * kelimeyi söyler.

Neden javascript motoruna bu kelimeleri hatırlamasını söylüyoruz? Çünkü, `` değiştir (…) '' kullanarak, normal ifademiz bir * desen * tanımlamamıza izin verir. "Replace (...)" için ikinci parametre olan dizede "$ 1" ve "$ 2" tanımlarız - bunlar hatırlanmasını istediğimiz iki yakalama grubudur. Burada, “şimdi, o ilk hatırlanan kelimeyi kullan, bir boşluk ve bölü ekle ve hatırlanan ikinci kelimeyi ekle diyoruz.

Çok şey oluyor ve bu giriş seviyesi bir konu değil, ama çok güçlü. Yukarıdaki normal ifademiz, yalnızca çevrelerinde boşluk * olmayan * eğik çizgilerin yerini alacak ve bunları boşluklarla bırakacaktır.

Ek olarak, bu, dizeyi bir diziye ve tekrar bir dizeye zorlamanın fazladan adımını önler. Sadece benim 0.02


cevap 2:

/ S * /// s * 'yi "/" ile değiştirmek için bir normal ifade kullanabilirsiniz.

Normal ifadenin dökümü:

/ s * sıfır veya daha fazla kez beyaz boşluk anlamına gelir

// '/' anlamına gelir, ancak '/' öncelenmelidir. Ne yazık ki, başka bir /

Sonra başka bir / s * var.

Dolayısıyla, burada sıfır veya daha fazla sayıda baştaki boşluk dizisini, ardından "/" ve ardından sıfır veya daha fazla sondaki boşluk "/" ile değiştiriyoruz.


cevap 3:

'/' Karakteri arasına boşluk ekleyerek neyin kastedildiğini tam olarak anladığımdan emin değilim, ancak 'örnek / örnek' gibi bir şeyi 'örnek / örnek'e dönüştürmek istediğinizi varsayıyorum. Eğer durum buysa, kullanabilirsin

String.prototype.split ()

birlikte

Array.prototype.join ()

:

const str = 'örnek / örnek / örnek';console.log (str.split ('/'). join ('/');// Beklenen çıktı:// 'örnek / örnek / örnek'

Split () yöntemi, dizeyi belirtilen bir ayırıcı dizenin her örneğinde ayırarak dizeyi bir dizi diziye dönüştürür. Bu durumda, ayırıcı basitçe "/"

Join () yöntemi, dizideki tüm öğeleri belirli bir ayırıcı dizeyle ayrılmış olarak birleştirerek yeni bir dize oluşturur ve döndürür. Bu durumda ' / '


cevap 4:

a2a

Dize işleme ve karakter değiştirme çok yaygın JS görevleridir ve bunları sık sık yaparım. "String.prototype.replace" ile bir regex kullanıyorum, önerilen regex sorgum ve uygulamam hem daha kolay hem de daha basit.

console.log ('merhaba / zalim / dünya'.replace (/ [/] / g,' / '));baskılar: merhaba / zalim / dünya

NOT: Bu normal ifade, halihazırda mevcut olabilecek ek boşlukları dikkate almaz, ancak söz konusu ölçüt soruda belirtilmemiştir. Ancak üretim kodunda olası ekstra boşlukları hesaba katardım. Bu durumda, negatif önden okuma ve geriye bakma kullanan biraz daha gelişmiş bir normal ifadeye ihtiyacınız vardır.

var regex = / (?console.log ('eğik çizgi / boşluklu / ama / ekle / burada'.replace (regex,' / '));baskılar: eğik çizgi / boşluklu / ama / değil / burada

cevap 5:

Eğik çizgi '/' özel bir karakter değildir, bu nedenle boşluk çubuğuna basılarak olağan şekilde boşluk eklenir. Neye işaret etmeye çalıştığınızı tam olarak anlamazsam durum bu olmalı.


cevap 6:

Es6 javascript'teki herhangi bir şeyi biçimlendirmek için şablon değişmezlerini kullanabilirsiniz. Bu, kaçış karakterlerini kullanmaya gerek kalmadan tüm sembolleri kullanmanın en iyi yoludur.


cevap 7:

var mystring = "merhaba / harika / dünya";

mystring.split ("/"). birleşim ("/");

Veya

mystring = mystring.replace ("/", "/");


cevap 8:

% 20 çalışmalı.