R 如何删除unicode<;U+;00A6>;从字符串?
我有一个字符串,比如:R 如何删除unicode<;U+;00A6>;从字符串?,r,regex,gsub,R,Regex,Gsub,我有一个字符串,比如: q <-"<U+00A6> 1000-66329" 但它并没有移除任何东西。我应该如何做才能只获得1000 66329 如果“始终”是第一个字符,您可以尝试: substring("\U00A6 1000-66B29", 2) 如果R将字符串打印为1000-66329,而不是和Φ1000-66B29,则将被解释为字符串”,而不是unicode字符。然后你可以做: substring("<U+00A6> 1000-66329",9)
q <-"<U+00A6> 1000-66329"
但它并没有移除任何东西。我应该如何做才能只获得
1000 66329
如果“始终”是第一个字符,您可以尝试:
substring("\U00A6 1000-66B29", 2)
如果R将字符串打印为1000-66329
,而不是和Φ1000-66B29
,则
将被解释为字符串”
,而不是unicode字符。然后你可以做:
substring("<U+00A6> 1000-66329",9)
我们也可以这样做
trimws(gsub("\\S+\\s+|-", " ", q))
#[1] "1000 66329"
我只想删除字符串开头的unicode
这样,您就不需要gsub
,您可以使用sub
和“^\\s*\\s*”
模式:
q <-"<U+00A6> 1000-66329"
sub("^\\s*<U\\+\\w+>\\s*", "", q)
请参见而不是删除,您应该将其转换为适当的格式。。。您必须将本地设置为UTF-8,如下所示:
Sys.setlocale("LC_CTYPE", "en_US.UTF-8")
也许您会看到以下消息:
Warning message:
In Sys.setlocale("LC_CTYPE", "en_US.UTF-8") :
OS reports request to set locale to "en_US.UTF-8" cannot be honored
在这种情况下,您应该使用stringi::stri_trans_general(x,“zh”)
这里“zh”的意思是“中文”。你应该知道你必须转换成哪种语言。就是这样在分隔符(空格?)上拆分,然后取第二位文本?赋值实际上是什么样子的?您是分配Unicode字符U+00A6还是文字字符串'
?因为这就是你的代码目前正在做的事情,其余的都没有多大意义。事实上,我有一个数据框,其中一列有像“1000-66329”这样的值,这是unicode for Breake bar symbol(Alpha),它位于所有值的开头。我想从数据中删除此意外符号。也许可以尝试将该符号复制并粘贴到您的gsub中。谢谢您的解决方案。但这给了我“006 1000 66329”,我还有一些包含字母的字符串,也像“1000-66B29”。我只想删除字符串开头的unicode。这是删除(ASCII)字符串
,而不是unicode字符。这对我来说非常有效。非常感谢您提供的解决方案。@HongOoi:没错,这就是OP在输入中的内容。@user6559913:FYI,“\u00a6”
模式与PCRE regex风格不兼容,要匹配unicode代码点,您需要使用\x{00a6}
符号。然而,正如您自己所提到的,您有一个要删除的literal
子字符串,所以您不需要它。
trimws(gsub("^\\s*<U\\+\\w+>|-", " ", q))
Sys.setlocale("LC_CTYPE", "en_US.UTF-8")
Warning message:
In Sys.setlocale("LC_CTYPE", "en_US.UTF-8") :
OS reports request to set locale to "en_US.UTF-8" cannot be honored