Разделение строк на переменные

177
28 апреля 2018, 15:59

Есть строка "/ставка 10 50". Числа 10 и 50 могут меняться. Необходимо записать их в нужные переменные. Так же сделать проверку, введено ли "/ставка" с двумя числами далее.

На подобии этого: if (test.Messages[0].Body == "/ставка " + число1 + " " + число2)

Answer 1

Это стандартная задача для регулярных выражений. Например, можно составить такое выражение: /ставка (?'number1'\d+) (?'number2'\d+). Здесь \d+ - означает последовательность из одной или более цифр, а конструкция (?'name'exp) выделяет часть выражения в именованную группу, потом по этому имени удобно обращаться к конкретной части регулярного выражения.

Использовать регулярное выражение можно как-то так:

// Входная строка
var s = @"/ставка 10 50";
// Шаблон
var pattern = @"/ставка (?'number1'\d+) (?'number2'\d+)";
// Создаем из шаблона экземпляр регулярного выражения
var regex = new Regex(pattern);
// Проверяем строку на соответствие регулярному выражению
if (regex.IsMatch(s)) // Если соответствует
{
    // Получаем сведения о совпадении
    var match = regex.Match(s);
    // Обращаемся к именованным группам, берем их значения и парсим в число
    var number1 = int.Parse(match.Groups["number1"].Value);
    var number2 = int.Parse(match.Groups["number2"].Value);
    Console.WriteLine(number1);
    Console.WriteLine(number2);
}
READ ALSO
Сетевая библиотека для C#

Сетевая библиотека для C#

Хотелось бы найти сетевую библиотеку для C# TCP/IP для создания многопоточных серверовХотелось, чтобы передача данных осуществлялась с помощью...

197
Убрать анимацию у кнопки в Windows Phone 8.1

Убрать анимацию у кнопки в Windows Phone 8.1

В моём проекте есть объект Button следующего вида:

160
REST API с графическим интерфейсом

REST API с графическим интерфейсом

Пишу клиент-серверную системуДля управления сервером (включение, отключение, просмотр подключенных клиентов и т

160
Нужно переобразовать vbs в c# [требует правки]

Нужно переобразовать vbs в c# [требует правки]

Пример входных и выходных данных

180