Comment remplacer tous les espaces avec% 20 en C #?

Je veux faire une chaîne dans une URL en utilisant C #. Il doit y avoir quelque chose dans le framework .NET qui devrait aider, non?

Je crois que vous recherchez HttpServerUtility.UrlEncode .

 System.Web.HttpUtility.UrlEncode(ssortingng url) 

Une autre façon de procéder consiste à utiliser Uri.EscapeUriSsortingng(ssortingngToEscape) .

J’ai trouvé utile System.Web.HttpUtility.UrlPathEncode(ssortingng str);

Il remplace les espaces par% 20 et non par +.

Pour échapper correctement les espaces ainsi que le rest des caractères spéciaux, utilisez System.Uri.EscapeDataSsortingng(ssortingng ssortingngToEscape) .

Comme commenté sur l’article approuvé, la méthode HttpServerUtility.UrlEncode remplace les espaces par + au lieu de% 20. Utilisez l’une de ces deux méthodes à la place: Uri.EscapeUriSsortingng () ou Uri.EscapeDataSsortingng ()

Exemple de code:

 HttpUtility.UrlEncode("https://mywebsite.com/api/get me this file.jpg") //"https%3a%2f%2fmywebsite.com%2fapi%2fget+me+this+file.jpg" Uri.EscapeUriSsortingng("https://mywebsite.com/api/get me this file.jpg"); //"https://mywebsite.com/api/get%20me%20this%20file.jpg" Uri.EscapeDataSsortingng("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 ssortingng: Uri.EscapeUriSsortingng("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.EscapeDataSsortingng("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" 

Utilisez HttpServerUtility.UrlEncode

Méthode HttpUtility.UrlEncode (Ssortingng)

Je devais le faire aussi, j’ai trouvé cette question il y a des années mais le titre et le texte des questions ne correspondent pas du tout, et utiliser Uri.EscapeDataSsortingng ou UrlEncode (n’utilisez pas celui-là s’il vous plait!) UrlEncode généralement aucun sens parle de passer des URL en tant que parameters à d’autres URL.

(Par exemple, passer une URL de rappel lors de l’authentification par identifiant ouvert, Azure AD, etc.)

En espérant que ceci soit une réponse plus pragmatique à la question: je veux créer une chaîne de caractères dans une URL en utilisant C #, il doit y avoir quelque chose dans le framework .NET qui devrait aider, non?

Oui – deux fonctions sont utiles pour créer des chaînes URL en C #

  • Ssortingng.Format pour formater l’URL
  • Uri.EscapeDataSsortingng pour échapper à tous les parameters de l’URL

Ce code

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

produit ce résultat

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

Qui peut être copié et collé en toute sécurité dans la barre d’adresse d’un navigateur ou l’atsortingbut src d’une balise HTML A , ou utilisé avec une curl , ou encodé dans un code QR, etc.

Le code ci-dessous remplacera l’espace répétitif par un seul caractère% 20.

Exemple:

L’entrée est:

 Code by Hitesh Jain 

Sortie:

 Code%20by%20Hitesh%20Jain 

Code

 static void Main(ssortingng[] args) { Console.WriteLine("Enter a ssortingng"); ssortingng str = Console.ReadLine(); ssortingng 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

De la documentation:

 Ssortingng TestSsortingng = "This is a ."; Ssortingng EncodedSsortingng = Server.HtmlEncode(TestSsortingng); 

Mais cela encode en réalité HTML, pas les URL. Au lieu de cela, utilisez UrlEncode (TestSsortingng) .