Использование RegEx для игнорирования пустых строк и пробелов

2

У меня есть следующий простой тест, который по какой-то причине не возвращает true.

string[] test = new string[] { "A", " ", " ", "D", "" };
Regex reg = new Regex(@"^[A-Z]\s$");
bool ok = test.All(x => reg.IsMatch(x));

Я также попытался помещать \s в квадратные скобки, но это не работает.

Я хочу убедиться, что все символы в массиве, которые не являются пустыми или пустыми, соответствуют A-Z.

Я понимаю, что я мог бы делать Where (x = > ! String.IsNullorEmpty(x) & x!= "") перед All, но я думал, что Regex может справиться с этим сценарием

  • 1
    В .Net 4 у вас также есть String.IsNullOrWhiteSpace, который устраняет необходимость в && x! = "". Не могу помочь с регулярным выражением, хотя, извините (я сосу на это)
  • 0
    Его 3,5 к сожалению
Показать ещё 3 комментария
Теги:
string

3 ответа

5
Лучший ответ

Я думаю, вы хотите:

Regex reg = new Regex(@"^[A-Z\s]*$");

В основном это означает, что строка полностью состоит из пробелов или A-Z.

Если вы хотите заставить его быть единственным символом или пустым, просто измените его на:

Regex reg = new Regex(@"^[A-Z\s]?$");
  • 0
    Вы имеете в виду, что он будет игнорировать пробелы, т.е. / он не будет пытаться сопоставить эти элементы
  • 0
    @Jon: я не знаю, что ты имеешь в виду. Он не будет игнорировать пробел - он будет соответствовать пробелу. Таким образом, «AB C» будет соответствовать первому регулярному выражению, как и «A», но «A0» - нет.
Показать ещё 5 комментариев
1

Enumerable.All<TSource> Method Определяет, удовлетворяют ли всем элементам последовательности.

  • 0
    Да, я думаю, что мне нужно предложение Где!
0

В регулярном выражении ^[A-Z]\s$ говорится: двухсимвольная строка, чей первый символ A-Z, а второй - пробел. Вы действительно хотите ^[A-Z\s]*$.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню