2016-06-15 14 views
2

文字列に非ローマ字/英語以外の文字(例:がいません)が含まれているかどうかを判断する方法を教えてください。文字列に非ローマ字が含まれているかどうかを確認する方法

+0

を実行することができます。あなたが何かをする方法を尋ねるように、そしてもっと重要なことに、これまでに試したことを見せるように言い換えてください。それが立てば、問題はかなり広く、「ツールを探しています」。 –

+0

私はdownvoteを理解していません。完全に合理的な質問のように見えますが、すぐには検索で見つからないものです。私はいつもchar-to-integer関数を見つけるのが難しいです。私はchar2Int、charToInt、chr2Int、または何でも...それが誰でもないので、私は決して覚えていない。 –

答えて

4

文字列がiconvgrep

# 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 

と非ラテン/非ASCII文字が含まれているかどうかを判断することができたの私の場合1,2,3、および7は、"には対応していません。

また、あなたの質問は、サイトのガイドラインにうまく適合しない

dat.1 #and the output will be all ASCII charaters 
[1] "Work, Awareness, Potential" 
5

あなたは、印刷可能なASCII文字の範囲外の文字の進値をチェックする正規表現/はgrepを使用することができます。

x <- 'ないでさ' 
grep("[^\x20-\x7F]",x) 
#[1] 1 
grep("[^\x20-\x7F]","Normal text") 
#integer(0) 

あなたは非印刷(「コントロール」)を許可したい場合は、文字を検討します"English"では、最初の引数hteの文字クラスの範囲をgrepに拡張し、 "\ x01"で始めることができます。文字クラスのargumetsの使用の詳細については、?regexを参照してください。文字をUnicode、16進または8進数値で指定する方法の詳細については、?Quotesを参照してください。

R.ooパッケージは有用である可能性があるの変換機能を持っています。

library(R.oo) 
?intToChar 
?charToInt 

ヘンリクBengtssonのは、彼のパッケージにこれらを含めるようにフィット見ているという事実は、これを行うための便利なメソッドがあることを私に言っていませんベース/デフォルトRで。彼は長年の使用R/guRuです。他の回答を見て

はストレートフォワードと思われるこの努力を促した:

> is.na(iconv(c(x, "OrdinaryASCII") , "", "ASCII")) 
[1] TRUE FALSE 
+0

0x7Fはおそらく印刷できません。 – sln

+0

私たちが話している出力デバイスに依存しないでしょうか? TTYがバックスペースになる可能性があります。 Rコンソールは 'iconv(" \ x7f "、" "、" ASCII ")から" R.oo :: intToChar(0x7f) "から返ってくるものと同じ" \ 177 "(8進数)を返します。 –

+0

私はそれがDEL制御コードだと思いますが、どんな制御コードも出力デバイスに影響を与えることは確実です。 7ビットASCIIが0x00-0x7Fである – sln

関連する問題