Nice programing

C #에서 모든 공백을 % 20으로 어떻게 바꾸나요?

nicepro 2020. 11. 12. 20:12
반응형

C #에서 모든 공백을 % 20으로 어떻게 바꾸나요?


C #을 사용하여 문자열을 URL로 만들고 싶습니다. .NET 프레임 워크에 도움이되는 무언가가 있어야합니다. 그렇죠?


나는 당신이 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


나도이 작업을 수행해야했고 몇 년 전에이 질문을 찾았지만 질문 제목과 텍스트가 일치 하지 않으며 통과에 대해 이야기하지 않는 한 Uri.EscapeDataStringor UrlEncode(저건 사용하지 마세요!)를 사용하는 것은 일반적으로 의미가 없습니다. 다른 URL에 대한 매개 변수로서의 URL.

(예 : 오픈 ID 인증, Azure AD 등을 수행 할 때 콜백 URL 전달)

이것이 질문에 대한 좀 더 실용적인 대답 이길 바랍니다. C #을 사용하여 문자열을 URL로 만들고 싶습니다. .NET 프레임 워크에 도움이되는 것이 있어야합니다. 맞습니까?

-두 가지 함수는 C #에서 URL 문자열을 만드는 데 유용합니다.

  • 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

브라우저의 주소 표시 줄 또는 srcHTML A태그 속성에 안전하게 복사하여 붙여 넣거나와 함께 사용 curl하거나 QR 코드 등으로 인코딩 할 수 있습니다.


HttpUtility.UrlEncode 메서드 (문자열)


아래 코드는 반복되는 공백을 단일 % 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 <Test String>.";
String EncodedString = Server.HtmlEncode(TestString);

그러나 이것은 실제로 URL이 아닌 HTML을 인코딩합니다. 대신 UrlEncode (TestString)을 사용하십시오 .

참고 URL : https://stackoverflow.com/questions/1517586/how-do-i-replace-all-the-spaces-with-20-in-c

반응형