PragmaGames
@PragmaGames
Увлекаюсь Unity.

Как составить регулярное выражение?

Разрешено вводить только латиницу в нижнем регистре, цифры и знак "-". латиницу в верхнем регистре заменить на нижний, остальные недопустимые символы заменить на "" , все пробелы заменить на "-".
Пример:
"Hello, world 2!"
"hello-world-2"
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
NikFaraday
@NikFaraday
Student full-stack Developer
string input = "Hello, world 2!";
        string pattern = @"[^a-z0-9\-]";

        string replaced = Regex.Replace(input.ToLower(), @"\s+", "-");
        replaced = Regex.Replace(replaced, pattern, "");
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
AshBlade
@AshBlade Куратор тега C#
Просто хочу быть счастливым
1. В исходной строке заменяем все пробелы на '-'. Это обычный string.Replace
2. Проверяем через регулярное выражение [a-z0-9\-]+

// Входная строка
var input = "Hello, world 2";

// Заменяем пробелы на тире
input = input.Replace(' ', '-');

// Проверяем регулярным выражением
var regex = new Regex(@"[a-z0-9\-]+");
if (regex.IsMatch(input))
{
    Console.WriteLine($"Соответствует");
}
else
{
    Console.WriteLine($"Не соответствует");
}


P.S. вообще приведенный пример не соответствует поставке задачи: почему символы перевелись в нижний регистр, почему восклицательный знак исчез.
Так же есть вопрос на счет табуляции и нескольких пробелов последовательно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы