[解決済み】Javaの文字列から✅、✈、♛などの絵文字/画像/記号を削除する
2022-04-12 18:36:01
質問
いろいろな絵文字や画像や記号が入った文字列があるのですが、どうしたらいいですか?
すべての文字列が英語というわけではなく、たとえばラテン語以外の言語もあります。
▓ railway??
→ Cats and dogs
I'm on ????
Apples ⚛
✅ Vi sign
♛ I'm the king ♛
Corée ♦ du Nord ☁ (French)
gjør at både ◄╗ (Norwegian)
Star me ★
Star ⭐ once more
早上好 ♛ (Chinese)
Καλημέρα ✂ (Greek)
another ✓ sign ✓
добрай раніцы ✪ (Belarus)
◄ शुभ प्रभात ◄ (Hindi)
✪ ✰ ❈ ❧ Let's get together ★. We shall meet at 12/10/2018 10:00 AM at Tony's.❉
...その他にもたくさんあります。
これらの標識・画像をすべて取り除き、各言語の文字(と句読点)だけを残すようにしたいです。
を使って看板のクリーニングを試みました。 EmojiParser ライブラリ :
String withoutEmojis = EmojiParser.removeAllEmojis(input);
問題は、EmojiParserが大半の符号を除去できないことです。今まで見つけた中で削除されたのは♦記号だけです。 他の記号、例えば❉ ★ ✰ ❈ ❧ ✂ ❋ ?♛は削除されません。
入力文字列からこれらの記号をすべて削除し、文字と句読点だけを残して 異なる言語 ?
解決方法は?
いくつかの要素をブラックリスト化する代わりに、残しておきたい文字のホワイトリストを作成するのはどうでしょうか?そうすれば、新しい絵文字が追加されるたびに心配する必要はありません。
String characterFilter = "[^\\p{L}\\p{M}\\p{N}\\p{P}\\p{Z}\\p{Cf}\\p{Cs}\\s]";
String emotionless = aString.replaceAll(characterFilter,"");
だから
-
[\\p{L}\\p{M}\\p{N}\\p{P}\\p{Z}\\p{Cf}\\p{Cs}\\s]
は、すべての数値 (\\p{N}
)、文字(\\p{L}
), マーク (\\p{M}
), 句読点 (\\p{P}
)、ホワイトスペース/セパレータ(\\p{Z}
), その他の書式設定 (\\p{Cf}
) 以上の文字U+FFFF
ユニコードで(\\p{Cs}
)、改行(\\s
) 文字を使用します。\\p{L}
具体的には は、キリル文字、ラテン文字、漢字など、他のアルファベットの文字も含みます。 -
は
^
はマッチを否定します。
例
String str = "hello world _# 皆さん、こんにちは! 私はジョンと申します。????";
System.out.print(str.replaceAll("[^\\p{L}\\p{M}\\p{N}\\p{P}\\p{Z}\\p{Cf}\\p{Cs}\\s]",""));
// Output:
// "hello world _# 皆さん、こんにちは! 私はジョンと申します。"
より詳細な情報が必要な場合は、Javaをチェックしてください。 ドキュメント は正規表現です。
関連
-
が 'X-Frame-Options' を 'deny' に設定しているため、フレーム内にある。
-
[解決済み] 文字列の一覧から空の文字列を削除する
-
[解決済み] Bashでパス文字列からファイルのサフィックスとパス部分を削除するにはどうすればよいですか?
-
[解決済み] 文字列からすべての特殊文字、句読点、空白を削除します。
-
[解決済み】パス名やファイル名から不正な文字を削除するには?
-
[解決済み】Javaの文字列から先頭と末尾の空白を取り除く
-
[解決済み】Javaでファイルから改行を削除する方法は?
-
[解決済み】Javaで文字列をUTF8バイト配列と相互変換する方法
-
[解決済み】Javaや.NETで文字列がmutableにならないのはなぜ?
-
[解決済み】文字列から改行を削除し、空白の1行に置き換える
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
スタイルシートとして解釈されるリソースが、MIMEタイプtext/htmlで転送される。
-
[解決済み] U+1F602で" \uD83DuDE02" のような絵文字を生成するにはどうしたらいいですか?
-
Spring Boot による HTTPS アクセスの設定
-
javaで非静的な解を静的な参照にすることができない
-
Intellij IDEAのエラー「CreateProcess error=2, system could not find specified file」に対する完璧な解決策です。
-
Spring BootのテストメソッドFailed to load ApplicationContextの問題を解決する
-
スレッド "main" で例外発生 java.net.BindException: アドレスは既に使用中です。NET_Bind
-
javax.net.ssl.SSLException: 読み取りエラー: ssl=0xdeae5100: システムコール中の I/O エラー、接続 res
-
起動時にEclipseエラーが発生しました。起動中に内部エラーが発生しました。java.lang.NullPoin: "Javaツーリングの初期化 "中に内部エラーが発生しました。
-
[解決済み】アクセント記号付き文字(ダイアクリティック)の具体的なJavaScript正規表現について)