Как проверить, содержит ли строка определенное количество букв и цифр C#

#c#

#c#

Вопрос:

Я хотел бы посмотреть, содержит ли строка 3 буквы 2 цифры 1 букву или число. В настоящее время это стандарт шведского номерного знака.

Можно ли посмотреть, соответствует ли строка стандарту ABC123 или ABC12D и предпочтительно в таком порядке? Как мне сделать это как можно проще?

 if(theString.Length == 6)
{
    if(theString.Contains(...)
    {
  

Комментарии:

1. Если порядок имеет значение, используйте regexp. Если порядок не имеет значения, отсортируйте строку перед применением регулярного выражения.

2. Обратите внимание, что буквы I, Q и V не используются, см. шведскую Википедию .

Ответ №1:

Для этого следует использовать регулярное выражение:

 Regex r = new Regex("^[A-Z]{3}[0-9]{3}$");
// ^ start of string
// [A-Z] a letter
// {3} 3 times
// [0-9] a number
// {3} 3 times
// $ end of string

string correct = "ABC123";
string wrong = "ABC12B";

Console.WriteLine(correct   ": "   (r.IsMatch(correct) ? "correct" : "wrong"));
Console.WriteLine(wrong   ": "   (r.IsMatch(wrong) ? "correct" : "wrong"));

// If last character can also be a letter:
r = new Regex("^[A-Z]{3}[0-9]{2}[0-9A-Z]$");
// ^ start of string
// [A-Z] a letter
// {3} 3 times
// [0-9A-Z] a number
// {2} 2 times
// [0-9A-Z] A letter or a number
// $ end of string

Console.WriteLine(correct   ": "   (r.IsMatch(correct) ? "correct" : "wrong"));
Console.WriteLine(wrong   ": "   (r.IsMatch(wrong) ? "correct" : "wrong"));
  

Комментарии:

1. Последним символом может быть цифра или буква.

2. Вот что говорится в вопросе: contains 3 letters 2 numbers 1 letter or number

3. Jop. Неправильно понял вопрос. Изменен ответ.

4. Это новинка за год ^^

Ответ №2:

Вы могли бы решить это с помощью Regex :

 if (Regex.IsMatch(theString, @"^[A-Z]{3}d{2}(d|[A-Z])$"))
{
    // matches both types of numberplates
}
  

Ответ №3:

Приведенный ниже код будет проверять с помощью регулярного выражения

 String input="ABC123";
var result = Regex.IsMatch(input, "^[A-Z]{3}[0-9]{3}$") || 
             Regex.IsMatch(input, "^[A-Z]{3}[0-9]{2}[A-Z]{1}$");
Console.WriteLine(result);
  

Комментарии:

1. Я бы тоже дал это в качестве ответа, если бы мог, спасибо вам!