我试图用gsub
替换我认为的标准短划线。我测试的代码是:
gsub("-", "ABC", "reported – estimate")
(作为奖励,如果你能告诉我是否有识别特殊字符的功能会有帮助)。
我不确定SO的代码格式是否会改变短划线格式,所以这里是我使用( - )的短划线。
答案 0 :(得分:5)
您可以通过在正则表达式模式中指定它来替换en-dash。
gsub("–", "ABC", "reported – estimate")
您可以将所有连字符,en-em和em-dashes与
匹配gsub("[-–—]", "ABC", "reported – estimate — more - text")
请参阅IDEONE demo
要检查字符串中是否存在非ascii字符,请使用
> s = "plus ça change, plus c'est la même chose"
> gsub("[[:ascii:]]+", "", s, perl=T)
[1] "çê"
您将获得一个空结果(如果一个字符串只包含" word"字符和空格),或者 - 如此处 - 一些"特殊"字符。
答案 1 :(得分:3)
对于特殊字符替换,您可以进行否定补充。
gsub('[^\\w]*', 'ABC', 'reported - estimate', perl = True)
将用ABC替换所有特殊字符。 [^ \ w]是一种模式,表示任何不是正常角色的东西。