C #, разделение частей неясно

#c#

#c#

Вопрос:

Я уже видел некоторые темы об этом, но те, в которых мы немного не понимаем, чего я хочу,

Я создаю специальный веб-браузер на C#

Но я хочу разделить текст текстового поля

Нравится:

Textbox1.Text = «http://google.com/lol«;

Я хочу,

Label1.Текст = «http://google.com«;

И

Label2.Text = «/lol«;

Но я хочу, чтобы он, например, определял URL из TextBox1.Text не только google.com , каждый URL

Нравится:

[

Label1.Текст = Label1.Text(«ignorefrom/»);
Label2.Text = Label2.Text(«ignorefromno/»);

]

Конечно, приведенное выше невозможно, но это в основном то, что я имею в виду

Anny1 знает, как я могу это сделать

Возможно лучшее объяснение.

Я создаю веб-браузер, который я хочу обнаружить

URL: например:http://google.com/lol

Я хочу, чтобы первая и вторая части были из URL-адреса в ярлыке

Итак: http://google.c om в label1 и /lol в label2 с каждым URL

Я видел несколько тем по этому поводу, но это немного отличалось от моего случая

Комментарии:

1. Как насчет строки типа example.com/lol/lol ? Как вы тогда его разделяете?

2. Мне неприятно это говорить, но если у вас возникли трудности с определением того, как разделить URL-адрес, то вам предстоит еще более сложная работа по написанию веб-браузера.

3. Ну, только с первым / я думаю?

4. Мне просто нужно получить google.com и все, что после этого разделилось: / whatevery / что угодно

Ответ №1:

Вы должны ознакомиться с документацией для .Uri сетевого класса. У него есть функциональность, которую вы ищете.

Пример:

 var url = new Uri("http://www.google.com/some/path/file.aspx");
Console.WriteLine(url.Host); // prints www.google.com
Console.WriteLine(url.AbsolutePath); // prints /some/path/file.aspx
  

Свойства, используемые в этом примере:

Комментарии:

1. Я бы предложил несколько примеров кода (даже если это всего пара строк); ответы только для ссылок обычно не одобряются, и вы можете обнаружить, что ваш ответ удален.

2. Эй, эмх, я прошу прощения за то, что предоставил слишком мало информации, но я использую ФОРМЫ для examepl, я имею в виду: TextBox1.Text = » google.com/somthing «; webBrowser1.Navigate(» google.com » «что-то здесь» «/ что-то»);

3. @Kylian105 Вам не обязательно записывать результаты в консоль. Вы можете назначить эти свойства текстовому свойству вашей метки.

4. я отредактировал приведенный выше ответ, я хочу поместить что-то вроде между URL, поэтому я не совсем уверен, как это сделать?

5. Вы хотите внести изменения в URL?

Ответ №2:

Я бы использовал правильный инструмент, в этом случае вы могли бы использовать Uri.TryCreate :

 string url = "http://google.com/lol";
Uri uri;
if (Uri.TryCreate(url, UriKind.Absolute, out uri))
{
    Textbox1.Text = uri.Scheme   Uri.SchemeDelimiter   uri.Host; 
    Label1.Text = uri.AbsolutePath;                              
}
  

Если вы хотите включить запрос, как указано в комментарии, вам следует использовать uri.PathAndQuery . Затем "http://google.com/lol?lol=1" возвращает /lol?lol=1 по желанию.

Комментарии:

1. Это работает как шарм: DDD, но одна проблема, если бы мне понравилось: google.com/lol?lol=1 это удаляет до ?lol = 1 :O?

2. @Kylian105: я отредактировал свой ответ, если вы хотите включить запрос, который вы должны использовать uri.PathAndQuery .

Ответ №3:

Спасибо, Тим Шмелтер

 string url = "http://google.com/lol";
Uri uri;
if (Uri.TryCreate(url, UriKind.Absolute, out uri))
{
    Textbox1.Text = uri.Scheme   Uri.SchemeDelimiter   uri.Host; 
    Label1.Text = uri.AbsolutePath;                              
}
  

работает как шарм 🙂

Ответ №4:

Это должно дать желаемый результат:

 using System.Uri;

Uri uri = new Uri("http://google.com/lol");
Label1.Text = uri.AbsoluteUri;
Label2.Text = uri.PathAndQuery;