如何在C#中用%20替换所有空格?

时间:2009-10-04 22:37:24

标签: c# url urlencode

我想使用C#将字符串转换为URL。 .NET框架中必定有一些应该有用的东西,对吗?

10 个答案:

答案 0 :(得分:100)

另一种方法是使用Uri.EscapeUriString(stringToEscape)

答案 1 :(得分:55)

我相信你正在寻找HttpServerUtility.UrlEncode

System.Web.HttpUtility.UrlEncode(string url)

答案 2 :(得分:46)

我发现有用的System.Web.HttpUtility.UrlPathEncode(string str);

它用%20替换空格而不用+。

替换

答案 3 :(得分:20)

要正确转义空格以及其他特殊字符,请使用System.Uri.EscapeDataString(string stringToEscape)

答案 4 :(得分:9)

如同已批准的故事所评论的那样,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"

答案 5 :(得分:2)

答案 6 :(得分:1)

我也需要这样做,多年前就发现了这个问题,但问题标题和文字并不匹配,使用Uri.EscapeDataStringUrlEncode(不要使用除非我们正在讨论将URL作为参数传递给其他URL,否则通常没有意义!

(例如,在执行开放式身份验证,Azure AD等时传递回调URL)

希望这是一个更实用的问题答案:我想使用C#将字符串转换为URL,.NET框架中必须有一些应该有帮助的东西,对吗?

- 两个函数有助于在C#中创建URL字符串

  • String.Format用于格式化网址
  • Uri.EscapeDataString用于转义网址中的任何参数

此代码

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

可以安全地将其复制并粘贴到浏览器的地址栏,HTML src标记的A属性,或与curl一起使用,或编码到二维码等

答案 7 :(得分:0)

答案 8 :(得分:-1)

以下代码将使用单个%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();
}

答案 9 :(得分:-3)

HttpServerUtility.HtmlEncode

来自文档:

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

但这实际上是编码HTML,而不是URL。而是使用 UrlEncode(TestString)