将字符表示为 utf-16 代码单元

represents a character as a utf-16 code unit

StringBuilder builder = new StringBuilder();
builder.Append(" \(Nested \(parentheses\) dont need a backslash.\) \(But a single \(parenthe)");
for(int i=0;i<builder.Length;i++)
{
    if(data[i] == "\" && data[i-1] == "\")
        data[i] += " ";
}

如果字符串中有两个反斜杠。我需要在它们之间添加一个 space 。在上面的代码中,我在 if 条件下得到错误 "represents a character as a utf-16 code unit"。因为,使用它,我正在创建一个 PDF 文件。提前致谢。

将鼠标悬停在这段代码上时得到的消息: "\" 这一行:

 if (data[i] == "\" && data[i-1] == "\")

其实不是错误而是classString的comment/description。

反斜杠用于表示 escape sequence。文档告诉:

Character combinations consisting of a backslash (\) followed by a letter or by a combination of digits are called "escape sequences." To represent a newline character, single quotation mark, or certain other characters in a character constant, you must use escape sequences. An escape sequence is regarded as a single character and is therefore valid as a character constant.

之所以会产生混淆,是因为编译器认为您在使用 \" 时希望将 " 作为字符串中的一个字符。这就是为什么 intellisense 仍然用 string 的颜色标记该行的其余部分,直到找到前面没有反斜杠的 " 为止。

您可以使用 @ 运算符强制按原样解释字符串,因此反斜杠将变成一个字符:

if (data[i] == @"\" && data[i-1] == @"\")

你的代码变得可编译。

不幸的是,当 i 为 0 时,您的循环将在第一次迭代中中断。因为 data 不能用 -1 索引。 如果您的问题是在两个连续的反斜杠之间放置 space,我建议采用不同的方法。

您可以像这样简单地使用 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(@"\", @"\ \");