为什么nchar("\\")=1, nchar("\abcde")=5
等在 R ?使用哪个功能nchar("\\")=2, nchar("\abcde")=6
?
问问题
355 次
3 回答
6
在 R 中,如果你想要一个文字\
,你需要像其他人所说的那样逃避它。encodeString()
我在您的示例中看不到原因。nchar()
使用并记住我的答案的第一行会更容易: escape your\
> nchar("\\\\")
[1] 2
> nchar("\\abcde")
[1] 6
如果您想忘记转义,那么encodeString()
可以提供帮助,但是您要么做一个(手动转义)要么使用escapeString()
,而不是两者:
> encodeString("\\")
[1] "\\\\"
> encodeString("\abcde")
[1] "\\abcde"
最后,\uXXXX
是一种在 R 中输入 unicode 字符的方法,这可以解决encodeString()
:
> nchar(encodeString("\u2642"))
[1] 1
因为它想将此视为 unicode 字符的表示。在这种情况下,“自己逃脱”的事情是正确的:
> nchar("\\u2642")
[1] 6
我不确定在 R 中替换字符串为 a 的直接方法,\
因为\\
它将\uXXXX
首先解释为 unicdoe 字符,然后才会发生替换(但此时没有\
。请?Quotes
参阅R 中使用的转义序列列表。
于 2012-04-24T13:31:57.693 回答
4
反斜杠正在转义下一个字符。这在许多编程语言中很常见;允许您在字符串中嵌入控制和其他非打印字符,例如 `\n' 表示换行符。
所以'\'实际上是单个\
字符。解决您的问题的最简单方法是将反斜杠加倍:nchar("\\abcde") = 6
.
于 2012-04-24T12:48:20.280 回答
1
nchar(encodeString("\\"))
应该给你你想要的。
于 2012-04-24T12:56:28.810 回答