确定字符串是否包含非罗马/非英语(例如ないでさ)字符的首选方法是什么?
答案 0 :(得分:5)
您可以使用regex / grep检查可打印ASCII字符范围之外的字符的十六进制值:
x <- 'ないでさ'
grep( "[^\x20-\x7F]",x )
#[1] 1
grep( "[^\x20-\x7F]","Normal text" )
#integer(0)
如果您想要考虑非打印(&#34;控制&#34;)字符&#34;英语&#34;,您可以将hte first参数中的字符类范围扩展为{ {1}}以&#34; \ x01&#34;开头。有关使用字符类主题的更多信息,请参阅grep
。有关如何将字符指定为Unicode,十六进制或八进制值的详细信息,请参阅?regex
。
R.oo包具有可能有用的转换函数:
?Quotes
Henrik Bengtsson认为将这些包含在他的包装中的事实告诉我,在base / default R中没有一个方便的方法来做这件事。他长期使用R / guRu。
看到另一个答案促使这项努力看起来很简单:
library(R.oo)
?intToChar
?charToInt
答案 1 :(得分:5)
您可以确定字符串是否包含yTile
和iconv
grep
这意味着第一,第二,第三和第七个索引是非ASCII字符,在我的情况下,1,2,3和7对应于:“ないでさ,satisfação,катынь和für。强>
你也可以运行
# My example, because you didn't add your data
characters <- c("ないでさ, satisfação, катынь, Work, Awareness, Potential, für")
# First you convert string to vector of words
characters.unlist <- unlist(strsplit(characters, split=", "))
# Then find indices of words with non-ASCII characters using ICONV
characters.non.ASCII <- grep("characters.unlist", iconv(characters.unlist, "latin1", "ASCII", sub="characters.unlist"))
# subset original vector of words to exclude words with non-ASCII characters
data <- characters.unlist[-characters.non.ASCII]
# convert vector back to a string
dat.1 <- paste(data, collapse = ", ")
# Now if you run
characters.non.ASCII
[1] 1 2 3 7