0

为什么nchar("\\")=1, nchar("\abcde")=5等在 R ?使用哪个功能nchar("\\")=2, nchar("\abcde")=6

4

3 回答 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 回答