私はfacebook Open Graph APIで得られたフレンドリストを解析するためにgrepを使用しています。私はbashで発行され、次のコマンドを使用して、私がやりたいことがほとんどできています:grepを使用してnon-usa、en、ASCII文字をエスケープする方法は?
"name":"John Day","id":"--id ommitted--"
"name":"Andria Cast\u00f1eda","id":"--id ommitted--" // let me draw your attention here
"name":"Jane Doe","id":"--id ommitted--"
名前はプライバシーに
を維持するために上記変更された:のように見えるのリストを生成するgrep -aiPo '"name":"(.*?)","id":"[[:digit:]]*"' friends?blahblah-access-token-stuff
真ん中のエントリには、ティルダNに対応するエスケープされていないシーケンスがあります。javaプログラムにそのような文字を簡単に入力することは可能ですか(主な目的) f1edaはカーリーnのためにユニコードを話していますか?
は、Javaで文字列を解析してユニコードをアンエスケープすることで、この問題を解決することをお勧めします。私はこの状況に対処するようにgrepに指示するか、あるいはbashで広く利用できるGNUやオープンソースのツールを好むでしょう。
その時点で、私はOMGを心配することなくJavaプログラムにファイルとして入力全体を送りますが、それはユニコードのエスケープシーケンスです! Javaは自然にUnicode文字を検出し、対応する内部表現にマップします。
ありがとうございます!
"アンドリアキャストの\ u00f1eda":あなたはまだ納得していない場合は、このクラスを試してみてください
Unicode in Java
:ここ
も導入非常に短いが、理解しやすいですとにかくUnicodeがJavaでエスケープされる方法。正しい文字を出力するはずです。私は問題が何であるか分かりません。 – Mikaveli
私がSystem.out.println( '\ u00f1eda')を呼び出すと、正しいUnicode文字が出力されます。しかし、私は典型的な文字列演算を行うことができますか?同様に、 "Andria Cast \ u00f1eda"と "Bob Joel"を比較しますか? –
正確には通常と同じです。 Javaでは、エスケープされたUnicodeが単一の文字として扱われるため、通常の文字列操作と比較がすべて適用されるため、特別な処理を行う必要はありません。バイト単位で比較を行うのではなく、便利なStringメソッドを使用してください。 – Mikaveli