Dies ist schwierig, ohne Verwendung einer Funktion;
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);
Ich glaube nicht, dass eine einfache Regex dies aushelfen kann. Sie Prototyp verwenden können, um es wie ein nativer Code zu verwenden ...
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(" "));
@PP ich mit meiner Lösung kam heraus, wo ich ein for-Schleife zu tun und und für jeden Artikel, den ich mit charAt überprüfen, ob es ein Raum ist. .. und das funktioniert, aber ich bin mir ziemlich sicher, dass es einen besseren Weg geben muss – Zo72
Warum nicht einen regulären Ausdruck erstellen und ihn beim Capturen global abgleichen? Etwas wie '(\\ S + \\ s +)' würde ausreichen. –
@PP Können Sie die Antwort ausarbeiten, wenn ich "bitte helfen Sie mir" .split ('\ s + \ S +') Ich bekomme ein Array mit einem Element [die Zeichenfolge selbst]? – Zo72