■ はじめに
今回は、JavaのreplaceFirst / replaceAllを使って 不要文字除去 / 対象文字のみ抽出を行う。
目次
【1】考え方 【2】サンプル 例1:カタカナ以外除外(カタカナのみ抽出) 例2:語尾の削除
【1】考え方
例:「数字以外除外(数字のみ抽出)」など行いたい場合の方法
* 数字以外を空白文字 "" で置き換えればいい * replaceAll("【正規表現】", "") でいい * 以下の例2のように、場合によっては、replaceFirst("【正規表現】", "") も使える * replaceFirst / replaceAll については、以下の関連記事を参照のこと
【2】サンプル
例1:カタカナ以外除外(カタカナのみ抽出)
public class Main { public static void main(String[] args) { String input = "ア=イ\\ウ|エ&オ%4カ;キ#ク*ケ;コ++"; String result = input.replaceAll("[^\\u30A0-\\u30FF]", ""); System.out.println("Result : " + result); } }
出力結果
Result : アイウエオカキクケコ
例2:語尾の削除
textValue.substring(0, textValue.length()-1) だと無条件で語尾を削除してしまう
http://npnl.hatenablog.jp/entry/20090917/1253160217
を参考にしているが、そのままだとコンパイルエラー。 「\\$」だとうまくいかない
例
import java.text.MessageFormat; public class Replacer { private static final String FORMAT_FOR_REMOVE_LAST = "{0}$"; public static void main(String[] args) { System.out.println(removeLast("サーバー", "ー")); System.out.println(removeLast("サーバ", "ー")); System.out.println(removeLast("メモリー", "ー")); System.out.println(removeLast("メモリ", "ー")); System.out.println(removeLast("aaa,bbb,", ",")); System.out.println(removeLast("aaa,bbb", ",")); } public static String removeLast(String textValue, String regex) { if (textValue == null) { return null; } return textValue.replaceFirst(MessageFormat.format(FORMAT_FOR_REMOVE_LAST, regex), ""); } }
出力結果
サーバ サーバ メモリ メモリ aaa,bbb aaa,bbb
参考文献
https://oshiete.goo.ne.jp/qa/1029431.html
文字種ごとの正規表現
http://d.hatena.ne.jp/dirablue/20090506/1241607961
関連記事
正規表現 ~ 文字列の抽出 ~
https://dk521123.hatenablog.com/entry/2016/12/30/142128
正規表現 ~ 複雑な文字列置き換え ~
https://dk521123.hatenablog.com/entry/2015/04/08/000052
正規表現 ~ 数字/文字の出現回数を数える ~
https://dk521123.hatenablog.com/entry/2016/10/19/004224_1
正規表現 全般
https://dk521123.hatenablog.com/entry/2011/09/10/235712