2010-06-17 4 views
5

Я хочу удалить все буквы в строке, которые не являются числовыми. Предпочтительно решение, созданное с помощью регулярных выражений или что-то еще. И в C#. Как это сделать?Как убрать буквы из строки?

ответ

5

Использование Regex:

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

\D является дополнением \d - соответствует все, что не является цифрой. + будет соответствовать одному или нескольким из них (он обычно работает немного лучше, чем один за другим).

Использование Linq (на .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

Умм хорошо? Как это полезно? Как работает регулярное выражение? Как вы загадочно используете эту «образец»? И как это вообще ответит на вопрос? – Jonas

+0

Мое предположение состояло в том, что он не знал, как вызвать замену регулярных выражений в C#, а не на точный код для этого. Прочитав другие ответы, я понял, что мой ответ был желательным, но спасибо за то, что он указал, что я ошибаюсь. – Buildstarted

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

Реферировано от http://msdn.microsoft.com/en-us/library/844skk0h.aspx

+0

'[\ w]' избыточно, вам не нужен класс символов. '\ w' - это точно то же самое. Однако '\ w' включает буквы и цифры (и подчеркивание), поэтому вы получаете специальные символы и пробелы. – Kobi

0

я скорее хотел бы использовать не ^ как ^\d или ^[0-9]

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

Ну, это в основном то же самое, но, вероятно, лучше известно. Блок 'try/catch' не нужен, единственное возможное исключение - если' subjectString' - 'null', который вам лучше проверить. Вы не получите 'ArgumentException' для этого шаблона - это правильно':) 'Однако это должно быть' '[^ \ d]' или '[^ 0-9]' " – Kobi

Смежные вопросы