Ich habe ein paar Beschriftungen für Eingabefelder:
let labels = [
"Foo Bar",
"Baz (spam & eggs)",
"More (junk here)"
];
Mein gewünschtes Ergebnis ist:
inputNames = [
"FooBar",
"Baz",
"More"
]
In Python kann ich re.sub()
verwenden, um basierend auf Regex zu ersetzen, aber kann die String.replace()
-Methode in JS dies tun? Wie würdest du es machen?
0
JacobIRR
17 Apr. 2018 im 21:16
4 Antworten
Beste Antwort
Ich denke so etwas ist am besten lesbar:
let labels = [
"Foo Bar",
"Baz (spam & eggs)",
"More (junk here)",
"(corner case)Foo(corner case) Jay"
];
for (i=0; i<labels.length; i++) {
labels[i] = labels[i].replace(/ /g, "").replace(/\(.*?\)/g, "");
}
console.log(labels);
1
Gillespie
17 Apr. 2018 im 18:28
Verwenden Sie .indexOf ('('), um herauszufinden, ob ' ('
vorhanden ist Wenn ja, entfernen Sie in der Zeichenfolge alles, was danach enthalten ist (enthalten), mit substr ()
let labels = [
"Foo Bar",
"Baz (spam & eggs)",
"More (junk here)"
];
labels.forEach(function(e,i){
var until = e.indexOf(' (');
if(until !== -1)
labels[i] = e.substr(0, until);
});
console.log(labels)
1
Scaramouche
17 Apr. 2018 im 18:23
Sie können diesen regulären Ausdruck in JS verwenden:
let labels = [
"Foo Bar",
"Baz (spam & eggs)",
"More (junk here)"
];
for (i=0; i<labels.length; i++) {
labels[i] = labels[i].replace(/\s*(?:\([^)]*\))?/g, '');
}
console.log(labels);
Regex /\s*(?:\([^)]*\))?/
entspricht 1+ Leerzeichen, gefolgt von einer optionalen Übereinstimmung in eckigen Klammern.
2
anubhava
17 Apr. 2018 im 18:32
Entfernen Sie zuerst alle Leerzeichen und dann Klammern
inputNames = labels.map(e => e.replace(/ /g, '')).map(e => e.replace(/\(.*\)/g, ''));
1
andi
17 Apr. 2018 im 18:30