Siv*_*a S 2 c# pdf stringbuilder utf-16 adobe-reader
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] += " ";
}
Run Code Online (Sandbox Code Playgroud)
如果字符串中有两个反斜杠。我需要在它们之间添加一个空格。在上面的代码中,我在 if 条件下收到错误“将字符表示为 utf-16 代码单元”。因为,我正在使用它创建一个 PDF 文件。提前致谢。
将鼠标悬停在这段代码上时收到的消息:
"\"在这一行中:
if (data[i] == "\" && data[i-1] == "\")
Run Code Online (Sandbox Code Playgroud)
实际上不是错误,而是类的注释/描述String。
反斜杠用于表示转义序列。文档告诉我们:
由反斜杠 (\) 后跟字母或数字组合组成的字符组合称为“转义序列”。要表示字符常量中的换行符、单引号或某些其他字符,必须使用转义序列。转义序列被视为单个字符,因此作为字符常量有效。
之所以会出现混乱,是因为编译器认为您在使用 时希望将 用作"字符串中的字符\"。这就是为什么智能感知仍然用 a 的颜色标记该行的其余部分,string直到它找到 a 的点"前面没有反斜杠的 a 为止。
您可以使用@运算符强制按原样解释字符串,因此反斜杠将变成只是一个字符:
if (data[i] == @"\" && data[i-1] == @"\")
Run Code Online (Sandbox Code Playgroud)
并且您的代码变得可编译。
i不幸的是,当为 0时,您的循环将在第一次迭代中中断。因为data无法使用 -1 进行索引。如果您的问题是在两个连续的反斜杠之间添加空格,我会建议采用不同的方法。
您可以简单地使用Replace这样的方法:
string s = @"\(Nested \(parentheses\) dont need a backslash.\) \(But a single \\(parenthe)";
s = s.Replace(@"\\", @"\ \");
Run Code Online (Sandbox Code Playgroud)
我不太明白数组data在您的代码中扮演什么角色,但您也可以使用StringBuilder
StringBuilder builder = new StringBuilder();
builder.Append(@" \(Nested \(parentheses\) dont need a backslash.\) \(But a single \\(parenthe)");
builder.Replace(@"\\", @"\ \");
Run Code Online (Sandbox Code Playgroud)