Wie entferne ich Zahlen mit Regex.Replace aus dem String?

71

Ich muss verwenden Regex.Replace , um alle Zahlen und Zeichen aus einer Zeichenfolge zu entfernen.

Beispieleingabe: 123- abcd33
Beispielausgabe:abcd

Gold
quelle
2
Sie möchten auch das "-" entfernt? Das sind keine Zahlen ...
1.

Antworten:

133

Versuche Folgendes:

var output = Regex.Replace(input, @"[\d-]", string.Empty);

Die \dKennung stimmt einfach mit einem beliebigen Ziffernzeichen überein.

Noldorin
quelle
20

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.

Guffa
quelle
1
@ 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.
Guffa
4
alternativnew string(text.Where(char.IsLetter).ToArray());
Skorunka František
5
var result = Regex.Replace("123- abcd33", @"[0-9\-]", string.Empty);
Darin Dimitrov
quelle
2

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 "
Sgedda
quelle
2

Schlagcodes könnten Ihnen helfen ...

Zahlen abrufen:

return string.Concat(input.Where(char.IsNumber));

Briefe holen:

return string.Concat(input.Where(char.IsLetter));
Ali Rasoulian
quelle
1

Das beste Design ist:

public static string RemoveIntegers(this string input)
    {
        return Regex.Replace(input, @"[\d-]", string.Empty);
    }
Vitaly Yakel
quelle
0
text= re.sub('[0-9\n]',' ',text)

Installieren Sie Regex in Python. Führen Sie dann den folgenden Code aus.

Shubham Smiley
quelle