Проверьте, начинается ли строка со значения элемента списка - PullRequest
0 голосов
/ 01 февраля 2019

Мне нужна помощь с моим кодом C #.

У меня есть список, который содержит только 2 строки символов.

prefixes.AddRange(new string[] { "oO", "c0", "c1" }); // и многие другие

Я хочу проверить, начинается ли значение, введенное пользователем, с этих элементов (значение вводится через текстовое поле)?

Например, результат, который я хочу получить, состоит в том, чтобы проверить, введет ли мой пользователь «123456789» (который не начинается с элемента моего списка), а затем автоматически добавить, например, «000» перед: «000123456789».

Думаю, я смогу добиться этого с помощью LinQ, но мне интересно, как это сделать.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Что сказал @piotr, но я бы, наверное, обернул в метод, чтобы скрыть уродливые биты.Предполагая, что префиксы являются глобальными, вы можете сделать:

public string GetPrefix(string s) {
      return prefixes.Any(p => s.StartsWith(p))
           ? "" : "000"
}

и затем использовать его.Или даже как метод расширения en для строки, если вы хотите ...

public static string GetPrefixForString(this string[] prefixes, string s) {
      return prefixes.Any(p => s.StartsWith(p))
           ? "" : "000"
}

// Usage: 
var foo = prefixes.GetPrefixForString(bar);
0 голосов
/ 01 февраля 2019

Для каждого префикса необходимо проверить, начинается ли с него usersText.Ниже код проверит это и добавит «000» в текст вашего пользователя.

if(!prefixes.Any(p => usersText.StartsWith(p))
{
    usersText = "000" + usersText;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...