Torakami Ответов: 1

Как проверить, является ли строка палиндромом или нет, используя регулярное выражение


Привет ,

Я пишу консольное приложение, которое будет проверять слово, является ли оно палиндромом или нет. Но я не знаю, как это сделать с помощью регулярного выражения, не могли бы вы предложить то же самое. также хотел проигнорировать none-буквенно-цифровые символы.

Например, Mad& * * am - это палиндром


Спасибо

Что я уже пробовал:

static void Main (string[] args)
{
строка s, обороты = "";
Приставка.WriteLine ("пожалуйста, введите строковое значение");
s = консоль.С readline();
for (int i = s. Length - 1; i >= 0; i--)
{
обороты += s[i].Метод toString();
}
// проверка строки на наличие паллиндрома
если (обороты = = s)
{
Приставка.Метода WriteLine("строка является палиндромом \п вводится строка {0} и реверс строки {1}", с оборотов);
}
ещё
{
Приставка.WriteLine ("строка не является палиндромом \N введенная строка была {0} , а обратная строка - {1}", s, revs);
}
Приставка.ReadKey();
}

1 Ответов

Рейтинг:
0

OriginalGriff

Даже не пытайся.
Регулярное выражение определенно не тот инструмент для этого. Ты можешь это сделать, но это будет ужасно.
Вместо этого просто сделайте это в коде C#.
По чистой случайности я написал это вчера для кого-то другого:

private static bool IsPalindrome(string inputString)
    {
    char[] inputArray = inputString.ToLowerInvariant().Where(char.IsLetter).ToArray();
    int len = inputArray.Length;
    for (int i = 0; i < len / 2; i++)
        {
        if (inputArray[i] != inputArray[len - (i + 1)]) return false;
        }
    return true;
    }


Torakami

Спасибо за ответ, но не могли бы вы объяснить мне, почему бы не пойти на регулярное выражение ?

OriginalGriff

Поскольку регулярные выражения являются текстовыми процессорами, они не включают никаких логических операций. Таким образом, они могут возвращать результат "совпадение / не совпадение", но на самом деле они не очень хороши в том, чтобы "игнорировать все символы, кроме этих типов, а затем сопоставлять их попарно (если только это не центральный один из несогласованных символов, если их нечетное число)". Таким образом, хотя это можно сделать, фактическое регулярное выражение было бы ужасно, как смотреть, понимать, так и изменять. Если вы хотите пойти на это, то сделайте это:
http://www.ultrapico.com/Expresso.htm
это вам поможет,но я бы серьезно не советовал. Это займет довольно много времени и усилий, чтобы заставить его работать.
Просто потому, что что-то возможно, не означает, что вы должны это делать! :смеяться: