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文件。提前谢谢。
发布于 2016-08-03 14:52:49
将鼠标悬停在下面这段代码上时,您会看到下面这行中的消息:"\":
if (data[i] == "\" && data[i-1] == "\")实际上不是错误,而是类String的注释/描述。
反斜杠用于表示escape sequence。文档告诉我们:
由反斜杠()、字母或数字组合组成的
字符组合称为“转义序列”。若要在字符常量中表示换行符、单引号或某些其他字符,必须使用转义序列。转义序列被视为单个字符,因此作为字符常量有效。
之所以会产生混淆,是因为当您使用\"时,编译器认为您希望在字符串中使用"作为字符。这就是为什么智能感知仍然用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(@"\\", @"\ \");https://stackoverflow.com/questions/38736279
复制相似问题