Frage

Ich denke, Regex ist Overkill auch. Ich brauche einige Zeit, um einen Code zu schreiben (ich denke, ich sollte jetzt lernen, dass ich einige Regex kenne).

Was ist der einfachste Weg, um die Zeichenfolge in einer alphanumerischen Zeichenfolge zu trennen? Es wird immer llllddddd sein. Ich möchte nur die Buchstaben (L's), normalerweise nur 1 oder 2 Buchstaben.

War es hilfreich?

Lösung

Trimend:

string result = input.TrimEnd(new char[]{'0','1','2','3','4','5','6','7','8','9'});
// I'm sure using LINQ and Range can simplify that.
// also note that a string like "abc123def456" would result in "abc123def"

Aber eine Regex ist auch einfach:

string result = Regex.Match(input,@"^[^\d]+").Value;

Andere Tipps

Ich bevorzuge die Regex -Antwort von Michael Stum, aber hier ist auch ein Linq -Ansatz:

string input = "ABCD1234";
string result = new string(input.TakeWhile(c => Char.IsLetter(c)).ToArray());

Sie können einen regulären Ausdruck verwenden, der den Ziffern entspricht, um sie zu entfernen:

input = Regex.Replace(input, "\d+$", String.Empty);

Die altmodische Schleife ist auch nicht schlecht, es sollte tatsächlich die schnellste Lösung sein:

int len = input.Length;
while (input[len-1] >= '0' && input[len-1] <= '9') len--;
input = input.Substring(0, len);

Sie haben es - beachten Sie die guten Lösungen verwenden den Nichtbetreiber, um Ihre Problembeschreibung zu verwenden. Was auch immer es am Frontend der Saite ist. Das Design -Paradigma, das ich jetzt verwende, ist kein Grenzwertcharakter, gefolgt von einem Grenzwertcharakter, gefolgt von einer Eröffnungsklammer.

Dies führt dazu, dass ein Trennzeichen nicht in der Ergebnismenge liegt, die zum einen gut etablierten ASCII-Werte für Datendelimitersl-EG 0x0019 / 0x0018 usw. sein kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top