2017-02-19 3 views
-2

Мне нужно найти, содержит ли данная строка более двух смежных символов. Например;Regex, чтобы найти более двух смежных символов в строке

Test123 - Должен возвращаться true, потому что он имеет 123 (более 2) соседних номеров.

TestABC - Верните истину из-за ABC.

Test - Возврат неверно.

Если кто-нибудь знает ответ, пожалуйста, поделитесь. Если Regex не является решением, то, пожалуйста, сообщите другим способом, спасибо.

+0

Вы не получите вокруг '(: а | BCD | CDE ...)', если вы настаиваете на используя регулярное выражение. Я знаю, что там что-то есть, просто не могу найти. –

+2

Ответ: не использовать Regex. Простой цикл должен быть проще – Slai

+0

Что вы имеете в виду, когда используете «смежные символы»? Должен ли он возвращать true для 'abč'? – Chizh

ответ

0

Это не задание для регулярного выражения, но больше для char, преобразованного в int. Так как каждый символ имеет целочисленное значение, вы можете отслеживать разницу между гольцами так:

static bool isValid(string s) 
{ 
    int oldValue = int.MinValue; 
    int consecutiveCounter = 0; 

    foreach (char item in s) 
    { 
     if(Math.Abs((int)item - oldValue) <= 1) 
     { 
      consecutiveCounter++; 
      oldValue = (int)item; 

      if (consecutiveCounter == 2) 
       return true; 
      else 
       continue; 
     } 

     oldValue = (int)item; 
     consecutiveCounter = 0; 
    } 

    return false; 
} 
Смежные вопросы