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"
Creo que estás buscando HttpServerUtility.UrlEncode .
System.Web.HttpUtility.UrlEncode(string url)
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?
Sí , 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.
Otra forma de hacerlo es usar Uri.EscapeUriString(stringToEscape)
.
Para escaparse correctamente de los espacios, así como del resto de los caracteres especiales, use System.Uri.EscapeDataString(string stringToEscape)
.
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) .