Разрешить частичные URL в. NET - PullRequest
0 голосов
/ 23 марта 2020

Предположим, у меня есть несколько ссылок с веб-страницы (https://example.com/xyz), например:

  • /abc
  • another.com
  • #def

Я бы хотел "исправить" эти ссылки, учитывая URL веб-страницы:

Как это сделать в. NET Core (C# / F #)?

1 Ответ

1 голос
/ 24 марта 2020

Метод Uri.TryCreate обрабатывает два из трех ваших случаев так, как вы хотите:

let ok, url = Uri.TryCreate(Uri("https://example.com/xyz"), "/abc")
// https://example.com/abc

let ok, url = Uri.TryCreate(Uri("https://example.com/xyz"), "another.com")
// https://example.com/another.com

let ok, url = Uri.TryCreate(Uri("https://example.com/xyz"), "#def")
// https://example.com/xyz#def

Во втором случае another.com просто интерпретируется как имя файла, а не как имя домена. Это вполне разумно, потому что дело неоднозначное.

Я не думаю, что есть способ автоматически обработать второй случай так, как вы хотите, используя встроенный метод. NET. Для этого вам, вероятно, потребуется реализовать логику c. Это зависит от того, что именно вы хотите - если вы хотите превратить <domain>.<tld> в https://<domain>.<tld>, вы можете проверить, соответствует ли строка шаблону <domain>.<tld> (и убедиться, что <tld> действительно, чтобы избежать превращения index.html в https://index.html) и затем сделайте преобразование самостоятельно.

...