Semplice stringa get (ignora i numeri alla fine) in C #

Immagino che regex sia eccessivo, inoltre mi ci vuole un po ‘di tempo per scrivere del codice (suppongo che dovrei imparare ora che conosco alcune regex).

Qual è il modo più semplice per separare la stringa in una stringa alfanumerica? Sarà sempre LLLLDDDDD. Voglio solo le lettere (io), in genere le sue sole 1 o 2 lettere.

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" 

Ma un RegEx è anche semplice:

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

Preferisco la risposta regex di Michael Stum, ma anche qui un approccio LINQ:

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

Puoi utilizzare un’espressione regolare che corrisponde alle cifre per rimuoverle:

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

Il vecchio ciclo non è male, dovrebbe essere in realtà la soluzione più veloce:

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

Ce l’hanno – le buone soluzioni usano l’operatore no per usare la descrizione del problema: “Non numeri” se i numeri in primo piano sembrano dai miei guadagni limitati che devi avere quello che viene chiamato catturare i gruppi per andare oltre qualunque cosa sia sul front-end della stringa. Il paradigma di progettazione che uso ora non è un carattere delimitatore, seguito dal carattere delimitatore, seguito da una parentesi graffa di apertura.

Ciò comporta la necessità di un carattere di delimitazione che non è nel set di risultati, che per una cosa può essere ben stabilito valori ascii per delimitatori di dati, ad esempio 0x0019 / 0x0018 e così via.