если URL-адрес веб-сайта не содержит языковой код, тогда сделайте что-нибудь - PullRequest
0 голосов
/ 24 февраля 2019

ASP.Net C # новичок здесь.Я ищу предложения по созданию условия для проверки, если URL-адрес веб-сайта не содержит кода языка ISO или регионального подкаталога, например, / us-en, / ae-en, / gb-en и т. Д. С использованием регулярного выражения.

Примеры URL-адресов веб-сайтов:
• URL-адрес веб-сайта с кодом языка - https://www.xbox.com/en-US/xbox-one?xr=shellnav
• URL-адрес веб-сайта без кода языка - https://www.xbox.com/xbox-one?xr=shellnav

Пример сценария:
•URL-адрес веб-сайта без какого-либо кода языка ISO не должен быть доступен и отображает страницу «Не найдено» или сообщение об ошибке 404.

Гораздо лучше, если предложение использует негативный подход - если URL-адрес веб-сайта не содержит кода языка ISO, он будетвыполнить блок кода в операторе (страница не найдена или сообщение об ошибке 404).

1 Ответ

0 голосов
/ 24 февраля 2019

Просто сопоставьте URL, используя это регулярное выражение,

\b[a-z]{2}-[A-Z]{2}\b

Демо

Если вы хотите, чтобы регистр не учитывался, просто добавьте (?i) в начале регулярного выражения,

(?i)\b[a-z]{2}-[a-z]{2}\b

Проверьте этот код C #, который печатает, совпадает ли URL или нет,

List<string> strings = new List<string>();
strings.Add("https://www.xbox.com/en-US/xbox-one?xr=shellnav");
strings.Add("https://www.xbox.com/xbox-one?xr=shellnav");

var regex = new Regex(@"\b[a-z]{2}-[A-Z]{2}\b");

foreach (string s in strings)
{
    if (regex.Match(s).Success) {
        Console.WriteLine(s + " --> Matches");  // Write your code here if URL contains language code
    } else {
        Console.WriteLine(s + " --> Doesn't match"); // Else part if URL doesn't contains language code
    }
}

Печатает,

https://www.xbox.com/en-US/xbox-one?xr=shellnav --> Matches
https://www.xbox.com/xbox-one?xr=shellnav --> Doesn't match
...