sharp que programacion lenguaje historia descargar caracteristicas c# url urlencode

c# - programacion - que es c sharp



¿Cómo reemplazo todos los espacios con% 20 en C#? (10)

Quiero hacer una cadena en una URL usando C #. Debe haber algo en el framework .NET que debería ayudar, ¿no?


Como se comentó en la historia aprobada, el método HttpServerUtility.UrlEncode reemplaza espacios con + en lugar de% 20. Utilice uno de estos dos métodos en su lugar: Uri.EscapeUriString() o Uri.EscapeDataString()

Código de muestra:

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"



El código a continuación reemplazará la repetición de espacio con un solo carácter% 20.

Ejemplo:

La entrada es:

Code by Hitesh Jain

Salida:

Code%20by%20Hitesh%20Jain

Código

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(); }


Encontré útil System.Web.HttpUtility.UrlPathEncode(string str);

Reemplaza espacios con% 20 y no con +.


Necesitaba hacer esto también, encontré esta pregunta de hace años pero el título y el texto de la pregunta no coinciden del todo, y usar Uri.EscapeDataString o UrlEncode (¡no lo use, por favor!) No tiene sentido a menos que nosotros lo hagamos. están hablando de pasar URL como parámetros a otras URL.

(Por ejemplo, pasar una URL de devolución de llamada al hacer una autenticación de ID abierta, Azure AD, etc.)

Esperando que esta sea una respuesta más pragmática a la pregunta: quiero hacer una cadena en una URL usando C #, debe haber algo en el framework .NET que pueda ayudar, ¿no?

, dos funciones son útiles para crear cadenas de URL en C #

  • String.Format para formatear la URL
  • Uri.EscapeDataString para escapar de cualquier parámetro en la URL

Este código

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

produce este resultado

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

Que se puede copiar y pegar de forma segura en la barra de direcciones de un navegador, o el atributo src de una etiqueta HTML A , o usarse con curl , o codificarse en un código QR, etc.






HttpServerUtility.HtmlEncode

De la documentación:

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

Pero esto en realidad codifica HTML, no URL. En su lugar, use UrlEncode (TestString) .