2016-03-30 7 views
0

私はユニコード文字列のリストを持っています。私は、 "\ u"が各文字列要素の部分文字列であるかどうかをテストして、特定のケースに対してアクションを実行したいのですが、これをどうやって行うのですか?" u"がUnicode Python文字列に含まれているかどうかをテストする方法は?

私はPythonでプログラミングしていました。私はPythonで日本語から英語の辞書を持っているので、各文字列の日本語を対応する英語の単語に置き換える予定です。

次の例では、実際には日本語の文字の1つに対応し、もう1つの日本語の文字に対応する\ u539aは一緒に日本語の単語になります。私はこの単語を英語にマップする辞書を持っていますが、今度は "\ u819c \ u539a"を英語の単語に置き換えたいと思います。日本語と英語が混在しているので、まずは純粋なasii文字列かUnicode文字列かを判断します。私はチェックしようとしている理由は、文字列に「\ U」

[u'\u819c\u539a_act', u'wild\u5e45', u'Hello_world', u'hello'] 

である私は、あなたが行うことができます最も簡単な方法は、Unicode文字列としてすべての文字列を扱うことです

True, True, False, False 
+0

したがって、上記のコードでは、あなたは出力を生成し、あなたは非漢字を除外することができ

 s.codePoints().filter(c -> c > 4296).forEach(System.out::println); 

のような何かをした場合:-)あなたの最初の文字列は実際には "u '_ _ _ _' '"であるため、 "\ u"で表されるパターンと一致する方法はありません。 –

+0

まあ、私の推測。私はOP文字列にユニコード文字が含まれているかどうか尋ねていると思いますか? – Saleem

+1

regex – Saleem

答えて

0

ことを答えると期待します文字列に、Unicodeのコードポイントが選択した値よりも大きい文字が含まれているかどうかを確認します。

public static void main(String[] args) { 
    char[] c1 = new char[]{'\'', '\u819c', '\u539a', '\u0061', 'a'}; 
    String[] strs = new String[]{new String(c1)}; 
    for (String s : strs) { 
     s.codePoints().forEach(System.out::println); 
    } 
} 

ここでは、使用した文字列から特定の文字を選択しました。一つはunicode sequenceとして表現されているが第四及び第五の文字は、同じであること

39 
33180 
21402 
97 
97 

注:このプログラム印刷を実行。文字「a」が\u0061「Unicode文字」として表現されているとしますか?理想的には、すべての文字にUnicodeのコードポイントがあるためです。しかし、もう一度、あなたがしなければならないことは、あなたの必要条件に依存します。

2番目と3番目の文字は、あなたが識別に興味を持っているものです。文字列になどの文字が含まれているかどうかを知りたい場合は、(おそらく中国語)です。それがあなたが探しているものなら、Unicode仕様を参照して、識別し、必要な方法でそれらを含む文字列を扱う文字(またはその範囲)のコードポイントを見つけ出す必要があります。あなたは不可能を行うために私たちを求めている

33180 
21402 
関連する問題