2016-06-07 65 views
1

我試圖找出包含單個或雙引號的字符串是否也包含一個反斜槓字符轉義字符或不識別已經被轉義

我注意到,在C#的,如果我有以下兩種串

string escaped = "It\'s awesome. \"Yes it is\" "; 
string nonEscaped = "It's awesome. Yes it is"; 

然後他們得到完全相同的方式打印出來(除了雙引號):

這真棒。是的它是

太棒了。 「是的,它是」

這是有道理的,因爲轉義字符不要讓打印出來......

不過,我試圖寫一個函數來確定它是和「是的,它是」正在使用單引號和雙引號的轉義字符...

有沒有辦法做到這一點?

回答

1

\」實際上是相同。因爲C#編譯器會將其檢測爲字符串的結尾,所以不能直接在該處使用反斜槓來標記引號。對於我們使用它們來包圍單個角色的人來說,同樣如此。所以,如果你想讓你有一個單一的APOSTROPH字符轉義:'\’’

因此,要回答你的問題,有\’字符之間沒有任何區別所以沒有辦法確定的。您可以通過下面的代碼檢查它:

string a = "'"; 
string b = "\'"; 
Console.WriteLine (a == b); // True 
Console.WriteLine (a.Equals(b)); // True 

瞭解更多關於轉義字符的C#:CodeProject

+0

是的,我明白了。我只想編寫一些邏輯來檢查是否在單引號之前添加了反斜槓(現在讓我們忘記雙引號)。 – user3587624

+0

請檢查更新的答案。 –

+0

所以你說的是,C#沒有辦法找出一個字符串在單引號前是否有反斜槓。對? C#會說「這很棒」和「它很棒」總是一樣的。正確? – user3587624