Лучший способ получить все цифры из строки [дубликата]

@PolyThinker Хотя я вижу этот ответ очень много на этот вопрос, по-моему, это нехорошее решение. Редактор по-прежнему считает, что он должен быть отступом полностью влево - проверьте это, нажав == на строку, начинающуюся с хэша, или нажав =, пока блок кода с комментариями в нем подсвечен для повтора.

Я настоятельно рекомендую filetype indent on и удалять строки set smartindent и set autoindent (или set cindent) из вашего vimrc. Кто-то еще (по-видимому, Дэвид Бустос) был достаточно любезен, чтобы написать полный парсер для отступов для нас; он находится в $ VIMDIRECTORY / indent / python.vim.

(решение Paul cindent, вероятно, работает для python, но filetype indent on гораздо более полезно.)

23
задан Chris Marisic 13 November 2015 в 15:06
поделиться

5 ответов

Вам нужно использовать регулярное выражение?

return new String(input.Where(Char.IsDigit).ToArray());
76
ответ дан Matt Hamilton 13 November 2015 в 15:06
поделиться

Есть ли у вас что-то против Replace?

return Regex.Replace(input, @"[^0-9]+", "");
21
ответ дан Alan Moore 13 November 2015 в 15:06
поделиться

Вы хотите заменить /\D/ (не цифра) на '' (пустая строка)

Regex r = new Regex(@"\D");
string s = Regex.Replace("(123) 455-2344", r, "");

Или, более кратко:

string s = Regex.Replace("(123) 455-2344", @"\D",""); //return only numbers from string
8
ответ дан grant7bar7 13 November 2015 в 15:06
поделиться

Просто удалите все не-цифры:

var result = Regex.Replace(input, @"\D", "");
4
ответ дан Konstantin Spirin 13 November 2015 в 15:06
поделиться

В Perl (вы можете адаптировать это к C #) просто выполните

$str =~ s/[^0-9]//g; 

Я предполагаю, что ваша строка находится в $ str. Основная идея заключается в замене всех не цифр на '' (то есть на пустую строку)

0
ответ дан Prix 13 November 2015 в 15:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: