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

本文关键字:代码 单元 utf-16 字符 表示 | 更新日期: 2023-09-27 17:59:48

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] += " ";
}

如果一个字符串中有两个反斜杠。我需要在它们之间加一个空格。在上面的代码中,我在if条件下得到错误"将字符表示为utf-16代码单元"。因为,使用这个,我正在创建一个PDF文件。提前谢谢。

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

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

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

实际上不是错误,而是类CCD_ 2的注释/描述。

反斜杠用于表示转义序列。文件告诉:

由反斜杠(''(后跟字母或数字组合组成的字符组合称为"转义序列"。若要表示字符常量中的换行符、单引号或某些其他字符,必须使用转义序列。转义序列被视为单个字符,因此作为字符常量是有效的。

出现这种混乱是因为编译器认为当您使用'"时,您希望将"作为字符串中的一个字符。这就是为什么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(@"''", @"' '");