[解決済み】アクセント記号を除去して、文字列全体を通常の文字に変換する方法はありますか?
2022-03-30 10:55:20
質問
アクセントを取り除き、文字を規則正しくする良い方法はありますか?
String.replaceAll()
メソッドを使用して、文字を1つずつ置き換えてください。
例
入力します。
orčpžsíáýd
出力
orcpzsiayd
ロシアのアルファベットや中国のアルファベットのように、アクセントのある文字をすべて含む必要はない。
どのように解決するのですか?
使用方法
java.text.Normalizer
を使用すると、この処理を行うことができます。
string = Normalizer.normalize(string, Normalizer.Form.NFD);
// or Normalizer.Form.NFKD for a more "compatible" deconstruction
これで、すべてのアクセント記号と文字が分離されます。 あとは、それぞれの文字が文字であるかどうかを比較して、文字でないものを捨てればいいだけです。
string = string.replaceAll("[^\\p{ASCII}]", "");
テキストがユニコードである場合、代わりにこれを使用する必要があります。
string = string.replaceAll("\\p{M}", "");
ユニコードの場合
\\P{M}
はベースグリフにマッチし
\\p{M}
(小文字)は各アクセントにマッチします。
ポインターをくれたGarretWilsonに感謝するとともに 正規表現.info は、素晴らしいユニコード・ガイドです。
関連
-
[解決済み] C++でintをstringに変換する最も簡単な方法
-
[解決済み] 整数の平方根が整数であるかどうかを判断する最速の方法
-
[解決済み] Python 3で文字列をバイトに変換する最良の方法?
-
[解決済み] Javaでリストを反復処理する方法
-
[解決済み] Pythonのunicode文字列のアクセントを除去(正規化)する最良の方法は何ですか?
-
[解決済み] JavaScriptで数値を文字列に変換するのに最適な方法は何ですか?
-
[解決済み] 文字列中の複数のスペースを削除する簡単な方法はありますか?
-
[解決済み】大文字と数字を含むランダムな文字列の生成
-
[解決済み】ArrayListを文字列に変換する最適な方法
-
[解決済み】Javaの文字列から✅、✈、♛などの絵文字/画像/記号を削除する
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ストリングビルダー.イコール Java
-
[解決済み] コレクションへの共有参照が見つかりました org.hibernate.HibernateException
-
[解決済み] Androidのコールバックとは何ですか?重複
-
[解決済み] javac ソースファイルが見つかりません
-
[解決済み] raw 型のメンバへのアンチェックの呼び出し
-
[解決済み] HTTP ステータス 500 - サーブレットクラス pkg.coreServlet のインスタンス化に失敗しました。
-
[解決済み] Java の文字列インデックスが範囲外です。0 [閉店]
-
[解決済み] JavaFX 同じパッケージ内なのに「場所が必要です。
-
[解決済み] Spring ApplicationContext - リソースリーク: 'context' が閉じられない
-
[解決済み】URLEncoderでスペース文字が変換されない。