@ SirDemon: Ja, LINQ ist normalerweise nicht die schnellste Option, aber reguläre Ausdrücke haben einen größeren anfänglichen Overhead. Bei Operationen mit kurzen Zeichenfolgen dauert das Einrichten des RegEx-Objekts länger als die eigentliche Arbeit.
Guffa
@ Guffa Weißt du wie das skaliert? Sagen wir auf 50.000 Datensätzen, sollte ich mich für RegEx entscheiden?
Arnold Wiersma
1
@ArnoldWiersma: Beide sollten ziemlich gut skalieren, beide sind im Grunde genommen linear, so dass es keine bösen Überraschungen gibt. Ich kann nicht sagen, was schneller wäre, das müsste man testen.
Antworten:
Versuche Folgendes:
var output = Regex.Replace(input, @"[\d-]", string.Empty);
Die
\d
Kennung stimmt einfach mit einem beliebigen Ziffernzeichen überein.quelle
Sie können dies mit einer LINQ-ähnlichen Lösung anstelle eines regulären Ausdrucks tun:
string input = "123- abcd33"; string chars = new String(input.Where(c => c != '-' && (c < '0' || c > '9')).ToArray());
Ein schneller Leistungstest zeigt, dass dies etwa fünfmal schneller ist als die Verwendung eines regulären Ausdrucks.
quelle
new string(text.Where(char.IsLetter).ToArray());
var result = Regex.Replace("123- abcd33", @"[0-9\-]", string.Empty);
quelle
Als String-Erweiterung:
public static string RemoveIntegers(this string input) { return Regex.Replace(input, @"[\d-]", string.Empty); }
Verwendung:
"My text 1232".RemoveIntegers(); // RETURNS "My text "
quelle
Schlagcodes könnten Ihnen helfen ...
Zahlen abrufen:
return string.Concat(input.Where(char.IsNumber));
Briefe holen:
return string.Concat(input.Where(char.IsLetter));
quelle
Das beste Design ist:
public static string RemoveIntegers(this string input) { return Regex.Replace(input, @"[\d-]", string.Empty); }
quelle
text= re.sub('[0-9\n]',' ',text)
Installieren Sie Regex in Python. Führen Sie dann den folgenden Code aus.
quelle