проверка формата строки c # - PullRequest
0 голосов
/ 07 ноября 2018

Обновление: допустимый формат - ДОБАВИТЬ || , Мне нужно проверить, если запрос, который получает сервер, в этом формате, и числа между <>. После этого я должен прочитать цифры и добавить их и записать результат обратно. Таким образом, если формат не подходит, например, ADD | <5> | <8> Я должен отказаться от этого и сделать конкретное сообщение об ошибке (это не число, это неправильный формат и т. Д.). Я проверил ДОБАВИТЬ | Часть, я взял их в массиве, и я могу проверить, если числа не являются числами. Но я не могу проверить, есть ли числа в <> или нет, потому что числа могут содержать несколько цифр, и ADD | <7> | <13> не совпадает с количеством элементов, таких как ADD | <2358> | <78961156>. Как я могу проверить, что числа находятся между <>?

, пожалуйста, помогите мне со следующим: мне нужно создать консольное приложение сервер-клиент, и я хотел бы проверить запросы от клиентов. Приемлемый формат: XXX|<number>|<number>. Я могу разделить сообщение как здесь:

string[] messageProcess = message.Split('|');

и я могу проверить, является ли это число или нет:

if (!(double.TryParse(messageProcess[1], out double number1)) || !(double.TryParse(messageProcess[2], out double number2)))

но как я могу проверить <number> часть? Спасибо за ваш совет.

1 Ответ

0 голосов
/ 07 ноября 2018

Для этого вы можете использовать Regex.

Если я вас правильно понял, следующие входные данные должны пройти проверку:

xxx|1232|32133
xxx|5345|23423
XXX|1323|45645

и следующие не должны:

YYY|1231|34423
XXX|ds12|sda43

Если мои предположения верны, то это регулярное выражение должно помочь:

XXX\|\d+\|\d+

Что это делает?

  • сначала он ищет три буквы X ... (если не имеет значения, заглавные или строчные X, замените XXX на (?:XXX|xxx) или используйте "флаг регулярного выражения без учета регистра" - demo )
  • разделены трубой (|) ...
  • затем ищет более одной цифры ...
  • разделены трубой (|) ...
  • наконец заканчивается другим набором из одной или нескольких цифр

Вы можете увидеть демо здесь: Regex101 Demo

И поскольку вы используете C #, Regex.IsMatch(), вероятно, подойдет вам лучше всего. Вы можете прочитать об этом здесь , если вы не знакомы с регулярными выражениями и как их использовать в C #.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...