Ich möchte Zahlen aus einer Zeichenfolge entfernen:
questionText = "1 ding ?"
Ich möchte die 1
Nummer und das Fragezeichen ersetzen ?
. Es kann eine beliebige Zahl sein. Ich habe den folgenden nicht funktionierenden Code ausprobiert.
questionText.replace(/[0-9]/g, '');
javascript
regex
kiran
quelle
quelle
Antworten:
Ganz in der Nähe, versuchen Sie:
questionText = questionText.replace(/[0-9]/g, '');
replace
funktioniert nicht mit der vorhandenen Zeichenfolge, sondern gibt eine neue zurück. Wenn Sie es verwenden möchten, müssen Sie es behalten!Ebenso können Sie eine neue Variable verwenden:
var withNoDigits = questionText.replace(/[0-9]/g, '');
Ein letzter Trick, um ganze Ziffernblöcke auf einmal zu entfernen, aber dieser könnte zu weit gehen:
questionText = questionText.replace(/\d+/g, '');
quelle
\?,\*
, aber du willst es wahrscheinlich/[?*]/g
. Fühlen Sie sich frei , eine neue Frage zu stellen, wenn Sie eine haben!Zeichenfolgen sind unveränderlich , deshalb funktioniert
questionText.replace(/[0-9]/g, '');
es alleine , aber es ändert nichts an der questionText-Zeichenfolge. Sie müssen das Ergebnis der Ersetzung einer anderen String-Variablen zuweisen oder den Text selbst erneut in Frage stellen.var cleanedQuestionText = questionText.replace(/[0-9]/g, '');
oder auf einmal (mit
\d+
, siehe Kobis Antwort):questionText = ("1 ding ?").replace(/\d+/g,'');
und wenn Sie die führenden (und nachfolgenden) Leerzeichen kürzen möchten, während Sie gerade dabei sind:
questionText = ("1 ding ?").replace(/\d+|^\s+|\s+$/g,'');
quelle
/g
alle regulären Ausdrücke - JavaScript ist auf diese Weise ärgerlich:)
Du bist bemerkenswert nah.
Hier ist der Code, den Sie in der Frage geschrieben haben:
questionText.replace(/[0-9]/g, '');
Der Code, den Sie geschrieben haben, betrachtet zwar die Variable questionText und erzeugt eine Ausgabe, die die ursprüngliche Zeichenfolge ist, wobei jedoch die Ziffern durch eine leere Zeichenfolge ersetzt werden.
Es wird jedoch nicht automatisch der ursprünglichen Variablen zugewiesen. Sie müssen angeben, wem Sie es zuweisen möchten:
questionText = questionText.replace(/[0-9]/g, '');
quelle
Ich möchte nur hinzufügen, dass es für jemanden von Interesse sein könnte, dass Sie das Problem auch andersherum betrachten. Ich bin mir nicht sicher, ob das hier von Interesse ist, aber ich finde es relevant.
Was ich mit dem anderen Weg meine, ist zu sagen: "Zieh alles aus, was nicht das ist, wonach ich suche, dh wenn du nur das" Ding "willst, könntest du sagen:
var strippedText = ("1 Ding?"). replace (/ [^ a-zA-Z] / g, '');
Was im Grunde bedeutet "entferne alles, was nicht a, b, c, d ... Z ist (irgendein Buchstabe).
quelle
Eine sekundäre Option wäre das Abgleichen und Zurückgeben von Nicht-Ziffern mit einem ähnlichen Ausdruck wie:
was wahrscheinlich für diese bestimmte Zeichenfolge in der Frage (
1 ding ?
) funktionieren würde .Demo
Prüfung
function non_digit_string(str) { const regex = /\D+/g; let m; non_digit_arr = []; while ((m = regex.exec(str)) !== null) { // This is necessary to avoid infinite loops with zero-width matches if (m.index === regex.lastIndex) { regex.lastIndex++; } m.forEach((match, groupIndex) => { if (match.trim() != '') { non_digit_arr.push(match.trim()); } }); } return non_digit_arr; } const str = `1 ding ? 124 12 ding ? 123 ding ? 123`; console.log(non_digit_string(str));
Wenn Sie den Ausdruck vereinfachen / ändern / untersuchen möchten, wurde dies im oberen rechten Bereich von regex101.com erläutert . Wenn Sie möchten , können Sie in diesem Link auch sehen , wie es mit einigen Beispieleingaben übereinstimmt.
RegEx Circuit
jex.im visualisiert reguläre Ausdrücke:
quelle
Dies kann ohne
regex
effizienter erfolgen:var questionText = "1 ding ?" var index = 0; var num = ""; do { num += questionText[index]; } while (questionText[++index] >= "0" && questionText[index] <= "9"); questionText = questionText.substring(num.length);
Und als Bonus speichert es auch die Nummer, was für manche Leute nützlich sein kann.
quelle
Sie können die Methoden .match && join () verwenden. .match () gibt ein Array zurück und .join () erstellt einen String
function digitsBeGone(str){ return str.match(/\D/g).join('') }
quelle