Как сократить долгую проверку на каждую букву C#

168
28 августа 2018, 00:00

Нужно сделать проверку что бы введенное слово не содержало английских символов (f,a,g). Но простым, длинным str.Contains() как-то не рационально что ли. А другие мысли не приходят в голову. Что можете посоветовать?

bool EngLetter( string a)
{
    if (a.Contains ('a') || a.Contains ('b') || a.Contains ('c') || a.Contains ('d') || a.Contains ('e') || a.Contains ('f') || a.Contains ('g') || a.Contains ('h')) /* ...*/
        return false;
    else
        return true;    
    }
Answer 1

Один из самых быстрых вариантов со словарем

private static HashSet<char> _engLetters 
                       = new HashSet<char>() {'a', 'b', 'c' /*.....*/}; 
bool EngLetter(string a)
{
    return a.Any(c=>_engLetters.Contains(c));
}

Ну, или если вы ищете только англ буквы, то можно воспользоваться тем, что они идут диапазонами

bool EngLetter(string a)
{
    return a.Any(c =>(c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'));
}
Answer 2

Вариант 1. Добавить цикл и развернуть проверку

bool EngLetter(string a) {
  string match = "abcdefghijklmnopqrtuvwxyz";
  for (int i = 0; i < a.Length; i++) {
    if (match.Сontains(a[i]))
      return false;
  }
  return true;
}

Вариант 2. Использовать регулярные выражения

bool EngLetter(string a) {
  Regex match = new Regex(@"[a-z]", RegexOptions.IgnoreCase);
  return !match.IsMatch(a);
}
READ ALSO
Использование Scrypt и Bcrypt C#

Использование Scrypt и Bcrypt C#

Как использовать Scrypt или Bcrypt в C#Прошерстил несколько сайтов и форумов, но не вижу никаких объяснений, как скачать и установить библиотеку...

212
Шанс выпадение предметов(drop chance) в Unity3d

Шанс выпадение предметов(drop chance) в Unity3d

Сразу говорю, что ответ, скорее всего, лежит у меня перед глазами, но я его, как обычно, не вижу(А ещё, скорее всего, я запутался xD) Есть код, в котором...

218
Unity, посмотреть туда, куда смотрит камера

Unity, посмотреть туда, куда смотрит камера

Есть скрипт для оружияМы пускаем рейкаст, и когда попадаем им, смотрим на точку попадения

193