思いついたものがあったら追記します。
環境
JDK 17
参考資料
部分文字列を取得する
終了インデックスの文字は含まれないことに注意。
String source = "abcdefghijk";
// 開始インデックス(=0始まり)のみ指定。開始インデックスの文字は含まれる
String sub1 = source.substring(3);
System.out.println(sub1);
// 開始インデックス(=0始まり)と終了インデックスを指定。
// 開始インデックスの文字は含まれる。終了インデックスの文字は含まれない。
String sub2 = source.substring(3, 6);
System.out.println(sub2);
実行結果
defghijk
def
CSV文字列を分割する(囲み文字無し)
コード
String source = "aaa,bbb,ccc";
String[] result = source.split(",");
for (String s : result) {
System.out.println(s);
}
実行結果
aaa
bbb
ccc
CSV文字列を分割する(囲み文字あり)
'aaa','bbb','ccc'
からaaa
・bbb
・ccc
が欲しい場合。
一番最初と最後の'
を削除してから、','
で分割するのがポイントです。
コード
String source = "'aaa','bbb','ccc'";
// 最初と最後の'を取り除く
String substring = source.substring(1, source.length() - 1);
// ','で分割する
String[] result = substring.split("','");
for (String s : result) {
System.out.println(s);
}
実行結果
aaa
bbb
ccc
結合してCSV文字列を作成する(囲み文字無し)
配列で指定
String[] source = {"aaa", "bbb", "ccc"};
String result = String.join(",", source);
System.out.println(result);
可変長引数で指定
String result = String.join(",", "aaa", "bbb", "ccc");
System.out.println(result);
Listで指定
List<String> source = List.of("aaa", "bbb", "ccc");
String result = String.join(",", source);
System.out.println(result);
Stream_APIを利用
List<String> source = List.of("aaa", "bbb", "ccc");
String result = source.stream()
.collect(Collectors.joining(","));
System.out.println(result);
実行結果(全て同じ)
aaa,bbb,ccc
結合してCSV文字列を作成する(囲み文字あり)
List<String> source = List.of("aaa", "bbb", "ccc");
String result = source.stream()
// 「区切り文字,最初の文字,最後の文字」の順に指定
.collect(Collectors.joining("','", "'", "'"));
System.out.println(result);
実行結果
'aaa','bbb','ccc'
文字列の置換
String source = "おいしいいちごをたべたい";
String result = source.replace("い", "あ");
// 元の文字列は変更されないことに注意
System.out.println(source);
System.out.println(result);
実行結果
おいしいいちごをたべたい
おあしああちごをたべたあ
似たメソッドで
replaceAll()
とreplaceFirst()
というものがあります。これらは置換対象を正規表現で指定します。対して👆のreplace()
は単純な文字列一致で置換対象を指定します。
変数の埋め込み
%d
は整数、%s
は文字列です。
String source = """
本日の気温は%d度です。
これは%sです。
""";
int temperature = 30;
String expression = "夏日";
String result = source.formatted(temperature, expression);
System.out.println(result);
実行結果
本日の気温は30度です。
これは真夏日です。
String.format(source, temperature, expression)
でも全く同じことができます。しかし、Java 15で導入された.formatted()
メソッドの方が読みやすいので、最近のJavaではこちらをよく使います。- Java 21では変数を直接埋め込むことができるようになるみたいです(JEP 430)。
文字コード変換(UTF-8 -> Shift-JIS)
TBD
文字コード変換(Shift-JIS -> UTF-8)
TBD