2013-08-30 14 views
30

私はtextboxにこのような何かC:\Users\UserName\Documents\Tasksを書きたい:文字列にバックスラッシュ()を書くにはどうすればよいですか?

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

私はエラーを取得する:

Unrecognized escape sequence.

私は、文字列にバックスラッシュを書くにはどうすればよいですか?

+7

二重バックスラッシュ\\を使用するか、文字列の先頭に@を付ける – Andrew

+0

http://stackoverflow.com/questions/1302864/unrec ognized-escape-sequence-for-path-string-containing-backslashes –

+1

なぜdownvote ?? –

答えて

54

バックスラッシュ("\")文字は、(\n)新しい行のような他の特殊文字を示すために使用される特殊なエスケープ文字、タブ(\t)、または二重引用符(\")です。バックスラッシュ文字を含める場合は、バックスラッシュを2つ使用するか、または@"\Tasks"のような文字列を@とそのまま使用してください。

MSDN documentation/C# Specificationには、バックスラッシュ文字を使用してエスケープされる文字と、逐語的文字列リテラルの使用について説明しています。

一般は言って、パスを貼り付け、ファイル/フォルダのパスを構築するとき、それは、二重のバックスラッシュのすべての時間を記述することから、それらを保存するので、ほとんどのC#.NET開発者は@逐語的文字列を使用して好む傾向があると彼らは直接/コピーすることができます、私はあなたが同じことをする習慣に入ることをお勧めします。すべては言っ


は、このケースでは、私は実際にあなたに、あなたがバックスラッシュは既に誤ってパスとに含まれているかどうかを心配する必要はありません@lordkain's answerのようにPath.Combineユーティリティメソッドを使用することをお勧めしますdoubling-パスの一部を組み合わせるときにスラッシュを使用するか、まったく省略することができます。

+1

これは私にとっては役に立ちません。 @ "\"だけで "\\" – MattyAB

+3

@MattyAB:結果の文字列をどうやって調べていますか? Visual Studioデバッガでチェックアウトしている場合は、エスケープ文字が追加された状態で表示されます。 –

1

ただ単にこのように、それらの2を使用し、+ "\\Tasks"またはバックスラッシュをエスケープするに@"\Tasks"

+1

私はあなたがmarkdownによって短期変更されたと思う - あなたの答えがちょうど "\ Tasks"であったように、 'code' backtickがエスケープせずに! – StuartLC

2

前の回答は正しいですが、この特定のケースではSystem.IO.Path.Combineメソッドを使用することをお勧めします。

あなたがここで詳細を見つけることができます。 http://msdn.microsoft.com/en-us/library/fyy7a5kt.aspx

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

を代わりに単一のバックスラッシュの二重のバックスラッシュを入れて...

+0

...トリプルスラッシュではありません。 – StuartLC

4

このPath.Combine()

var folder = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 
var fullpath = path.Combine(folder,"Tasks"); 
のために作られた特別な機能があります
関連する問題