web-dev-qa-db-ja.com

C#ですべてのスペースを%20に置き換えるにはどうすればよいですか?

C#を使用して文字列をURLにしたい。 .NETフレームワークには何か役立つものがあるはずですよね?

64
Haim Bender

HttpServerUtility.UrlEncode を探していると思います。

System.Web.HttpUtility.UrlEncode(string url)
56
LiraNuna

これを行う別の方法は、 Uri.EscapeUriString(stringToEscape) を使用することです。

102
Dirk Vollmar

便利なSystem.Web.HttpUtility.UrlPathEncode(string str);が見つかりました

スペースを+ではなく%20に置き換えます。

46
Gilda

スペースとその他の特殊文字を適切にエスケープするには、 System.Uri.EscapeDataString(string stringToEscape) を使用します。

20
palswim

承認されたストーリーについてコメントしたように、 HttpServerUtility.UrlEncode メソッドはスペースを%20ではなく+に置き換えます。代わりに、次の2つの方法のいずれかを使用します。 ri.EscapeUriString() または ri.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"
10
Darrelk

つかいます - HttpServerUtility.UrlEncode

2
Thomas Levesque

私もこれを行う必要があり、何年も前からこの質問を見つけましたが、質問のタイトルとテキストが完全に一致せず、Uri.EscapeDataStringまたはUrlEncode(これを使用しないでください!)は、URLをパラメーターとして他のURLに渡すことについて話さない限り、通常意味をなしません。

(たとえば、オープンID認証、Azure ADなどを行うときにコールバックURLを渡す)

これが質問に対するより実用的な答えであることを願っています:C#を使用して文字列をURLにしたいのですが、.NETフレームワークには何か役立つはずです?

はい-C#でURL文字列を作成するには2つの関数が役立ちます

  • 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

ブラウザのアドレスバー、HTML srcタグのA属性に安全にコピーして貼り付けるか、curlで使用するか、QRコードにエンコードできます。等.

1
0
Jacob