Как заменить все пробелы на% 20 в C #?

Я хочу сделать строку в URL с помощью C #. В .NET Framework должно быть что-то, что должно помочь, правильно?

Я считаю, что вы ищете HttpServerUtility.UrlEncode .

 System.Web.HttpUtility.UrlEncode(string url) 

Другой способ сделать это – использовать Uri.EscapeUriString(stringToEscape) .

Я нашел полезный System.Web.HttpUtility.UrlPathEncode(string str);

Он заменяет пробелы% 20, а не +.

Чтобы правильно избежать пробелов, а также остальных специальных символов, используйте System.Uri.EscapeDataString(string stringToEscape) .

Как прокомментировал утвержденную историю, метод HttpServerUtility.UrlEncode заменяет пробелы + вместо% 20. Вместо этого используйте один из этих двух методов: Uri.EscapeUriString () или Uri.EscapeDataString ()

Образец кода:

 HttpUtility.UrlEncode("https://mywebsite.com/api/get me this file.jpg") //"https%3a%2f%2fmywebsite.com%2fapi%2fget+me+this+file.jpg" Uri.EscapeUriString("https://mywebsite.com/api/get me this file.jpg"); //"https://mywebsite.com/api/get%20me%20this%20file.jpg" Uri.EscapeDataString("https://mywebsite.com/api/get me this file.jpg"); //"https%3A%2F%2Fmywebsite.com%2Fapi%2Fget%20me%20this%20file.jpg" //When your url has a query string: Uri.EscapeUriString("https://mywebsite.com/api/get?id=123&name=get me this file.jpg"); //"https://mywebsite.com/api/get?id=123&name=get%20me%20this%20file.jpg" Uri.EscapeDataString("https://mywebsite.com/api/get?id=123&name=get me this file.jpg"); //"https%3A%2F%2Fmywebsite.com%2Fapi%2Fget%3Fid%3D123%26name%3Dget%20me%20this%20file.jpg" 

Использовать HttpServerUtility.UrlEncode

Метод HttpUtility.UrlEncode (String)

Мне тоже нужно было это сделать, нашел этот вопрос много лет назад, но заголовок вопроса и текст не совсем совпадают, и использование Uri.EscapeDataString или UrlEncode (не используйте это, пожалуйста!) Обычно не имеет смысла, если мы не будем говорят о передаче URL-адресов в качестве параметров для других URL-адресов.

(Например, передача URL-адреса обратного вызова при открытии идентификационной идентификации, Azure AD и т. Д.)

Надеясь, что это более прагматичный ответ на вопрос: я хочу сделать строку в URL с помощью C #, должно быть что-то в .NET Framework, которое должно помочь, правильно?

Да – две функции полезны для создания строк URL в C #

  • String.Format для форматирования URL-адреса
  • Uri.EscapeDataString для экранирования любых параметров в URL-адресе

Этот код

 String.Format("https://site/app/?q={0}&redirectUrl={1}", Uri.EscapeDataString("search for cats"), Uri.EscapeDataString("https://mysite/myapp/?state=from idp")) 

производит этот результат

https://site/app/?q=search%20for%20cats&redirectUrl=https%3A%2F%2Fmysite%2Fmyapp

Которые можно безопасно скопировать и вставить в адресную строку браузера или атрибут src тега HTML A или использовать с curl или закодировать в QR-код и т. Д.

Приведенный ниже код заменит повторяющееся пространство одним символом% 20.

Пример:

Вход:

 Code by Hitesh Jain 

Вывод:

 Code%20by%20Hitesh%20Jain 

Код

 static void Main(string[] args) { Console.WriteLine("Enter a string"); string str = Console.ReadLine(); string replacedStr = null; // This loop will repalce all repeat black space in single space for (int i = 0; i < str.Length - 1; i++) { if (!(Convert.ToString(str[i]) == " " && Convert.ToString(str[i + 1]) == " ")) { replacedStr = replacedStr + str[i]; } } replacedStr = replacedStr + str[str.Length-1]; // Append last character replacedStr = replacedStr.Replace(" ", "%20"); Console.WriteLine(replacedStr); Console.ReadLine(); } 

HttpServerUtility.HtmlEncode

Из документации:

 String TestString = "This is a ."; String EncodedString = Server.HtmlEncode(TestString); 

Но это фактически кодирует HTML, а не URL. Вместо этого используйте UrlEncode (TestString) .

  • URL-кодированная косая черта в URL-адресе
  • Как я могу кодировать строку в Excel в VBA?
  • Параметры запроса URL-адреса в Java
  • Каков правильный способ кодирования URL-символов Unicode?
  • Кодирование URL-адреса HTTP в Java
  • Должен ли я кодировать данные POST?
  • Кодирование URL с использованием C #
  • URLEncoder не способен переводить символ пробела
  • Как кодировать значения параметров URI?
  • Кодировка URL-адресов Java для параметров строки запроса
  • Давайте будем гением компьютера.