【Java】チートシート【文字列編】
目次
文字列の種類
// 通常の文字列
String str = "abc";
// 連結時に使うスレッドセーフでない
StringBuilder sb = new StringBuilder("abc");
// 連結時に使うスレッドセーフ
StringBuffer sbuf = new StringBuffer("abc");
連結
Stringでの文字列連結は遅いのでなるべく避ける。
スレッドセーフが必要なケースは少ないので、StringBuilderを使うのが一般的。
str = str + "abc";
sb.append("abc");
sbuf.append("abc");
文字の長さ
str.length();
切り出し
str = "abcde";
// 2~4文字目を切り出し
System.out.println(str.substring(1,4)); // bcd
// 3文字目以降を切り出し
System.out.println(str.substring(2)); // cde
分割
str = "A,B,C,D";
String[] result1 = str.split(",");
System.out.println(Arrays.toString(result1)); // [A, B, C, D]
String[] result2 = str.split(",",2);
System.out.println(Arrays.toString(result2)); // [A, B,C,D]
比較
// 等しいか
boolean boo = str1.equals(str2);
// 大小比較
// str < str2:負の値
// str = str2:0
// str > str2:正の値
int num = str1.compareTo(str2);
置き換え
str = "abcabcabc";
// 文字列中に存在する全てのabcをdefに置き換える
str.replace("abc","def");
// 文字列中に存在する最初のabcをdefに置き換える
str.replaceFirst("abc","def");
// replaceAllは正規表現を使いたい時
// 合致する文字列は全て置き換える
str.replaceAll("\r\n","\r");
特定の文字列が含まれるか
str = "abcabcabc";
// 文字列中に存在する全てのabcをdefに置き換える
str.replace("abc","def");
// 文字列中に存在する最初のabcをdefに置き換える
str.replaceFirst("abc","def");
// replaceAllは正規表現を使いたい時
// 合致する文字列は全て置き換える
str.replaceAll("\r\n","\r");
特定の文字列が含まれているか
// ヒットした文字列のインデックスを返す
// 最初にaが登場するインデックス
str.indexOf("a");
// 2文字目以降で最初にaが登場するインデックス
str.indexOf("a",1);
// 後方から検索して最初にaが登場するインデックス
str.lastIndexOf("a");
// 2文字目以前で最初にaが登場するインデックス
str.lastIndexOf("a",1);
大文字・小文字変換
// 大文字変換
str.toUpperCase();
// 小文字変換
str.toLowerCase();
前後の空白削除
// ここで言う空白は半角スペース・改行・タブ
str.trim();
型変換
// ここで言う空白は半角スペース・改行・タブ
str.trim();
型変換
// 数値変換
Integer.valueOf(str);
Long.valueOf(str);
Double.valueOf(str);
BigDecimal bg = new BigDecimal(str);