将字符表示为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文件。提前谢谢。
将鼠标悬停在这段代码上时得到的消息:此行"'"
:
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(@"''", @"' '");