Java 文字列処理

自分が良く使う文字列処理まとめてみる.


・文字列分割

String[] split = str.split(" ");

String#split(String)で正規表現に一致する部分で分割.


・一文字アクセス

char c = str.charAt(0);

String#charAt(int)で引数の位置の文字を取得.


・文字の配列

char[] cs = str.toCharArray();

String#toCharArray()で文字の配列を取得.別に一文字ずつアクセスでもいいけど中身を一部書き換えたいときとかはこっち.


・文字列置換

String result = str.replaceAll("[\\[\\],]", "");

String#replaceAll(String, String)で正規表現に一致する文字列をすべて引数の文字列に置換.必要ない文字とかを消す時にも便利.上記の例だと配列やリストなどのtoString()表記を空白で区切られた文字列に変換できる.例:"[1, 2, 3]"->"1 2 3"


・文字列の長さ

int len = str.length();

String#length()で文字列の長さを取得できる.


・文字の位置

int start = str.indexOf(' ');
int end = str.lastIndexOf(' ');
int endBeforeSpace = str.lastIndexOf('a', end);

List<Integer>spaceIndex=new ArrayList<Integer>();
for(int i=str.indexOf(' ');i>=0;i=str.indexOf(' ',i+1)){
  spaceIndex.add(i);
}

String#indexOf(char)で最初から見ていって最初に文字が見つかった位置,String#lastIndexOf(char)で最後から見ていって最初に見つかった位置を取得.引数にもうひとつ数字を加えるとそこ(引数の位置も含む)から探して行って最初に見つかる位置を返す.見つからなかったときは-1.


・部分文字列

String substringAfterSpace = str.substring(str.indexOf(' ')+1);
String substringSpaceToSpace = string.substring(str.indexOf(' ')+1, str.lastIndexOf(' '));

String#substring(int)で引数の位置を含む所から最後までの部分文字列を返す.もう一つ数字を引数に加えるとその位置の直前までの位置の部分文字列を返す.


・文字の配列から文字列生成

char[]cs = str.toCharArray();
String str2 = new String(cs);

Stringのコンストラクタの引数に文字の配列を渡すとその文字列を作ってくれる.地味に便利.


・前後の空白削除

String trimedStr = str.trim();

String#trim()で前後に付いてる空白を削除できる.例:" abc "->"abc"


・数値を文字列へ

String numStr = Integer.toString(num);
String numStr2 = Integer.toString(num, 2);

Integer#toString(int)で数値を文字列にする.変な文字が入ってたらNumberFormatExceptionが起きる.もう一つ数値の引数を加えるとその進数で表示.例:「Integer.toString(3,2)->"11"


・文字列反転

String revStr = new StringBuffer(str).reverse().toString();