2010-06-17 23 views
5

Chcę usunąć wszystkie litery w ciągu, które nie są numeryczne. Najlepiej rozwiązanie wykonane z wyrażeń regularnych lub coś takiego. I w języku C#. Jak to zrobić?Jak usunąć litery ze sznurka?

Odpowiedz

5

Korzystanie Regex:

str = Regex.Replace(str, @"\D+", ""); 

\D jest dopełnieniem \d - pasuje do wszystkiego, co nie jest cyfrą. + dopasuje jedną lub więcej z nich (zwykle działa trochę lepiej niż pojedynczo).

użyciu LINQ (na .NET 4.0):

str = String.Concat(str.Where(Char.IsDigit)); 
-1
string result = System.Text.RegularExpressions.Regex.Replace("text to look for stuff", "pattern", "what to replace it with") 
+0

Umm w porządku? Jak to jest przydatne? Jak działa regex? Jak w tajemniczy sposób korzystasz z tego "wzoru"? I jak to w ogóle odpowiada na pytanie? – Jonas

+0

Moim założeniem było po prostu to, że nie wiedział, jak wywołać zastępowanie wyrażenia regularnego w języku C#, zamiast wymagać dokładnego kodu, aby to zrobić. Po przeczytaniu innych odpowiedzi zdałem sobie sprawę, że moja odpowiedź była chybiona, ale dziękuję za to, że wskazałem, że się mylę. – Buildstarted

0
string str = "ab123123abc" 
str = Regex.Replace(str, @"[\w]", ""); 

odwołuje się od http://msdn.microsoft.com/en-us/library/844skk0h.aspx

+0

'[\ w]' jest zbędne, nie potrzebujesz klasy znaków. '\ w' jest dokładnie takie samo. Jednak '\ w' zawiera litery i cyfry (oraz znak podkreślenia), więc kończy się znakami specjalnymi i spacjami. – Kobi

0

ja raczej lubię używać nie ^ jak ^\d lub ^[0-9]

string resultString = null; 
try { 
    resultString = Regex.Replace(subjectString, @"[^\d]+", ""); 
} catch (ArgumentException ex) { 
    // Syntax error in the regular expression 
} 
+1

Cóż, to w zasadzie to samo, ale prawdopodobnie lepiej znane. Blok 'try/catch' nie jest potrzebny, jedynym możliwym wyjątkiem jest sytuacja, w której' subjectString' ma wartość 'null', którą lepiej sprawdzić. Nie dostaniesz 'ArgumentException' dla tego wzorca - to jest poprawne':) 'Jednak powinno to być' '[^ \ d]' lub '[^ 0-9]' " – Kobi

Powiązane problemy