2013-07-18 7 views
6

nasıl böyle bir dizi olsun, böylece bujavascript: Bir dize bölme (henüz boşluk koruyarak)

"please  help me " 

gibi bir dize bölmek yapın: Başka bir deyişle

["please  ","help ","me "] 

, ben

+0

@PP yapmam nereye ... bir yerli kod gibi kullanmak prototip kullanabileceğiniz bir ve for çevriminin ve bir boşluk bile olsa charAt ile kontrol her öğe için. .. ve bu işe yarıyor ama eminim ki daha iyi bir yol olmalı. – Zo72

+0

Neden normal bir ifade oluşturmuyor ve yakalama sırasında global olarak eşleşmiyor? (\\ S + \\ s +) 'gibi bir şey yeterli olur. –

+0

@PP Eğer "lütfen bana yardım et" yaparsam cevabı düzeltebilirsin .split ('\ s + \ S +') Bir öğe [dizi kendisi] ile bir dizi olsun? – Zo72

cevap

13

şey gibi uzayı (veya boşluk)

Teşekkür koruyan bir dizi olsun:

var str = "please  help me "; 
var split = str.split(/(\S+\s+)/).filter(function(n) {return n}); 

FIDDLE

+0

@adaneo teşekkürler teşekkürler ... reg expr ne yaptığını açıklar .... Onu doğru cevap olarak işaretleyeceğim – Zo72

+2

'\ S, bir boşluk olmayan herhangi bir karakterle eşleşiyor, artı ekleyerek açgözlülük yaratıyor, bir karakter kümesini eşleştiriyor ve sonra' 's tersi, matematiksel boşlukları ve artı açgözlülük yapar, bu yüzden karakterler ile başlayan ve boşluk ile biten bir grupla eşleşir ve sonraki grup, boşluktan sonra bir karakter olduğunda başlar. Filtre, eşleşmeyi sondaki ve başlangıçtan itibaren ve her grupta, Bunlar emtpy. – adeneo

0

bu işlevi kullanmadan karmaşıktır;

var temp = "", outputArray = [], text = "please  help me ".split(""); 
for(i=0; i < text.length; i++) { 
    console.log(typeof text[i+1]) 
    if(text[i] === " " && (text[i+1] !== " " || typeof text[i+1] === "undefined")) { 
     outputArray.push(temp+=text[i]); 
     temp=""; 
    } else { 
     temp+=text[i]; 
    } 

} 
console.log(outputArray); 

Basit bir normal ifadenin buna yardımcı olabileceğini sanmıyorum. sen benim çözüm ile çıktı

String.prototype.splitPreserve = function(seperator) { 
    var temp = "", 
     outputArray = [], 
     text = this.split(""); 
    for(i=0; i < text.length; i++) { 
     console.log(typeof text[i+1]) 
     if(text[i] === seperator && (text[i+1] !== seperator || typeof text[i+1] === "undefined")) { 
      outputArray.push(temp+=text[i]); 
      temp=""; 
     } else { 
      temp+=text[i]; 
     } 

    } 
    return outputArray; 
} 

console.log("please  help me ".splitPreserve(" "));