2008-09-23 63 views
5

我有一個幫助類從XML文件中提取字符串。該字符串是一個文件路徑(所以它有反斜槓)。我需要使用該字符串...我怎樣才能像使用字面命令一樣使用它?在字符串變量中使用字面量'@'

取而代之的是:

string filePath = @"C:\somepath\file.txt"; 

我想這樣做:我是如何真正使用它

string filePath = @helper.getFilePath(); //getFilePath returns a string 

這不是;這只是爲了讓我的意思更清楚些。是否有某種.ToLiteral()或某種?

回答

13

如果你已經有了價值,我認爲你不必擔心它。 @運算符用於指定字符串時(如在第一個代碼段中)。

你試圖處理不工作的路徑字符串?

+1

哇...今天電腦太長... XML文件路徑是錯誤的。 絕對沒有理由我需要做我想做的事,謝謝你讓我直接...我需要去睡覺! – naspinski 2008-09-23 12:55:26

3

我不確定我是否理解。在你的例子中:如果helper.getFilePath()返回「c:\ somepath \ file.txt」,就沒有問題了,因爲只有在你明確指定一個帶有「」的字符串時才需要@。當函數「彼此交談」時,您將始終獲得文字路徑。如果XML包含c:\ somepath \ file.txt,並且函數返回c:\ somepath \ file.txt,則字符串filePath也將包含「c:\ somepath \ file.txt」作爲有效路徑。

2

在C#中,帶有雙引號的@符號允許您編寫轉義字符串。例如。

print(@"c:\mydir\dont\have\to\escape\backslashes\etc"); 

如果你不使用它,那麼你需要在你的字符串中使用轉義字符。

http://msdn.microsoft.com/en-us/library/aa691090(VS.71).aspx

你不需要在代碼中其他地方指定。事實上,這樣做會導致編譯器錯誤。

1

你已經得到了它。 @ -operator用於將文字轉換爲字符串,同時保留所有時髦的字符。你的路徑已經是一個字符串 - 你根本不需要做任何事情。只是失去了@。

string filePath = helper.getFilePath(); 
1

字符串從助手類返回是不是一個字符串,所以你並不需要使用「@」字符刪除反斜槓的行爲。

1

@「」只是讓編寫字符串文字更容易。

string (C# Reference, MSDN)

逐字字符串開始@,並且還用雙引號。例如:

@"good morning" // a string literal

逐字字符串的優點是轉義序列不被處理,這使得它很容易寫,例如,一個完全合格的文件名:

@"c:\Docs\Source\a.txt" // rather than "c:\\Docs\\Source\\a.txt"

一個地方,我用它是在一個正則表達式模式:

string pattern = @"\b[DdFf][0-9]+\b";

如果你有一個可變的字符串,你不需要做一個「文字」出來的,因爲如果它是很好已經形成,它已經有了正確的內容。