與鼠標移到該代碼段徘徊,當你得到消息: "\"
在這一行:
if (data[i] == "\" && data[i-1] == "\")
實際上不是一個錯誤,但類String
的意見/描述。使用反斜槓表示escape sequence。該文檔告訴:
由反斜槓(\)後跟字母或數字組合組成的字符組合稱爲「轉義序列」。要表示換行符,單引號或字符常量中的某些其他字符,必須使用轉義序列。轉義序列被視爲單個字符,因此作爲字符常量有效。
產生了困惑,因爲編譯器會認爲你想有"
作爲一個字符在字符串中當您使用\"
。這就是爲什麼intellisense仍然以string
的顏色標記該行的其餘部分,直到找到在其前面沒有反斜槓的"
。
可以使用@
操作,迫使該字符串被解釋爲是,那麼反斜槓將成爲又一個字符:
if (data[i] == @"\" && data[i-1] == @"\")
並且代碼編譯。
不幸的是,當i
爲0時,您的循環會在第一次迭代中斷裂。因爲data
將不可索引-1。 如果你的問題是在兩個連續的反斜槓之間放一個空格,我會建議一種不同的方法。
你可以使用簡單的方法Replace
像這樣:
string s = @"\(Nested \(parentheses\) dont need a backslash.\) \(But a single \\(parenthe)";
s = s.Replace(@"\\", @"\ \");
我不太明白data
陣列在代碼中扮演哪個角色,但你也可以使用StringBuilder
StringBuilder builder = new StringBuilder();
builder.Append(@" \(Nested \(parentheses\) dont need a backslash.\) \(But a single \\(parenthe)");
builder.Replace(@"\\", @"\ \");
做
你的代碼甚至不會編譯。 '\'表示轉義序列,'\「'實際上是雙引號轉義的方式。由於問題本身的語法着色顯示,'」\「&& data [i-1] ==」'實際上是一個單獨的串 –