как я могу удалить протокол из URI? т.е. удалить HTTP
Как удалить PROTOCOL из URI
Ответ 1
Вы можете использовать этот класс System.Uri
следующим образом:
System.Uri uri = new Uri("http://stackoverflow.com/search?q=something");
string uriWithoutScheme = uri.Host + uri.PathAndQuery + uri.Fragment;
Этот wil даст вам stackoverflow.com/search?q=something
Изменить: это также работает примерно: blank: -)
Ответ 2
В общем смысле (не ограничиваясь http/https), (абсолютный) uri всегда является схемой, сопровождаемой двоеточием, за которой следуют данные, специфичные для схемы. Итак, единственная безопасная вещь, которую нужно сделать, - это вырезать по схеме:
string s = "http://stackoverflow.com/questions/4517240/";
int i = s.IndexOf(':');
if (i > 0) s = s.Substring(i + 1);
В случае с http и несколькими другими вам также может понадобиться .TrimStart('/')
, но это не часть схемы и не гарантируется существование. Тривиальный пример: about:blank
.
Ответ 3
Лучший (и для меня самый красивый) способ - использовать класс Uri
для синтаксического анализа строки до абсолютного URI, а затем используйте метод GetComponents
с правильным UriComponents
перечисление, чтобы удалить схему:
Uri uri;
if (Uri.TryCreate("http://stackoverflow.com/...", UriKind.Absolute, out uri))
{
return uri.GetComponents(UriComponents.AbsoluteUri &~ UriComponents.Scheme, UriFormat.UriEscaped);
}
Дальнейшая ссылка: перечисление UriComponents
украшено FlagsAttribute
, поэтому побитовые операции (например, &
и |
). В этом случае &~
удаляет биты для UriComponents.Scheme
из UriComponents.AbsoluteUri
с помощью оператора AND в сочетании с оператором побитового дополнения.
Ответ 4
Для этого вы можете использовать RegEx. Нижеприведенный образец удовлетворит ваши потребности.
using System;
using System.Text.RegularExpressions;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string txt="http://www.google.com";
string re1="((?:http|https)(?::\\/{2}[\\w]+)(?:[\\/|\\.]?)(?:[^\\s\"]*))"; // HTTP URL 1
Regex r = new Regex(re1,RegexOptions.IgnoreCase|RegexOptions.Singleline);
Match m = r.Match(txt);
if (m.Success)
{
String httpurl1=m.Groups[1].ToString();
Console.Write("("+httpurl1.ToString()+")"+"\n");
}
Console.ReadLine();
}
}
}
Сообщите мне, помогает ли это
Ответ 5
Это не самый красивый способ, но попробуйте что-то вроде этого:
var uri = new Uri("http://www.example.com");
var scheme = uri.Scheme;
var result = uri.ToString().SubString(scheme.Length + 3);