c# - 文字列にバックスラッシュ(\)を書き込むにはどうすればよいですか?

Translate

このようなものを書きたいC:\Users\UserName\Documents\Taskstextbox:

txtPath.Text = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)+"\Tasks";

エラーが発生します:

認識されないエスケープシーケンス。

文字列に円記号を書き込むにはどうすればよいですか?

This question and all comments follow the "Attribution Required."

すべての答え

Translate

バックスラッシュ("\")文字は、新しい行などの他の特殊文字を示すために使用される特殊エスケープ文字です(\n)、タブ(\t)、または引用符(\")。

バックスラッシュ文字自体を含める場合は、2つのバックスラッシュが必要であるか、@逐語的な文字列:

var s = "\\Tasks";
// or 
var s = @"\Tasks";

読むMSDNドキュメント/ C#仕様これは、円記号を使用してエスケープされる文字と、逐語的な文字列リテラルの使用について説明しています。

一般的に言えば、ほとんどのC#.NET開発者は、@ファイル/フォルダーパスを作成するときの逐語的な文字列は、常に二重の円記号を書き込む必要がなく、パスを直接コピーして貼り付けることができるため、同じことを行う習慣を身に付けることをお勧めします。


とはいえ、この場合、実際に使用することをお勧めしますPath.Combineのようなユーティリティメソッド@lordkainの答えその場合、パスの一部を結合するときに、バックスラッシュがすでにパスに含まれていて、誤ってスラッシュを2倍にしたり、完全に省略したりするかどうかを心配する必要はありません。

ソース
Translate

バックスラッシュを回避するには、次のように2つを使用します。\\

あなたが他のものを逃れる必要があるならば、これは役に立つかもしれません。.

ソース
Translate

このために作られた特別な機能がありますPath.Combine()

var folder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var fullpath = path.Combine(folder,"Tasks");
ソース
Translate

前の答えは正しいですが、この特定のケースでは、System.IO.Path.Combine方法。

詳細については、こちらをご覧ください。http://msdn.microsoft.com/en-us/library/fyy7a5kt.aspx

ソース
Nil
Translate
txtPath.Text = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)+"\\\Tasks";

シングルバックスラッシュの代わりにダブルバックスラッシュを入れてください...

ソース
Translate

ただ逃げる"\"+を使用して"\\Tasks"または次のような逐語的な文字列を使用します@"\Tasks"

ソース
Translate

この投稿はかなり古いものですが、私は自分のケースでうまくいくものを試しました。

以下の値で文字列変数を作成したかったのです。

21541_12_1_13\":null

だから私のアプローチはそのようなものでした:

  • 逐語的に使用して文字列を構築する

    string substring = @ "21541_12_1_13 \" ":null";

  • 次に、削除機能を使用して不要な円記号を削除します

    string newsubstring = substring.Remove(13、1);

お役に立てば幸いです。乾杯

ソース
Leave a Reply
You must be logged in to post a answer.
著者について