我试图用我认为的标准短划线替换gsub.我测试的代码是:
gsub("-", "ABC", "reported – estimate")
但这没有任何作用.我将破折号复制并粘贴到http://unicodelookup.com/#-/1中,似乎是一个冲刺.那个网站提供了一个简单的十六进制,十二进制等代码,我一直试图取代短划线,但我没有运气.建议?
(作为奖励,如果你能告诉我是否有识别特殊字符的功能会有帮助).
我不确定SO的代码格式是否会改变破折号格式,所以这里是我正在使用的破折号( - ).
您可以通过在正则表达式模式中指定它来替换en-dash.
gsub("–", "ABC", "reported – estimate")
Run Code Online (Sandbox Code Playgroud)
您可以匹配所有连字符,en和em-dashes
gsub("[-–—]", "ABC", "reported – estimate — more - text")
Run Code Online (Sandbox Code Playgroud)
请参阅IDEONE演示
要检查字符串中是否存在非ascii字符,请使用
> s = "plus ça change, plus c'est la même chose"
> gsub("[[:ascii:]]+", "", s, perl=T)
[1] "çê"
Run Code Online (Sandbox Code Playgroud)
请参阅此IDEONE演示
您将获得一个空结果(如果一个字符串只包含"单词"字符和空格),或者 - 如此处 - 一些"特殊"字符.