StringのAPI全般に言えることはStringは変更不可なので、操作結果が反映された新しいオブジェクトを戻り値で受け取るということ。
変更可能なStringBuilder/StringBufferとはここが違う。
■文字列の連結
concat(String str)
String str = "abcdef"; str = str.concat("012"); System.out.println(str); 出力結果:abcdef012
■大文字に変換
toUpperCase()
String str = "abcdef"; str = str.toUpperCase(); System.out.println(str); 出力結果:ABCDEF
■前後の空白を削除
trim()
String str = " abcdef "; str = str.trim(); System.out.println(str); 出力結果:abcdef
■大文字と小文字を考慮せずに比較
boolean equalsIgnoreCase(String str)
String str = "aBcD"; System.out.println(str.equalsIgnoreCase("AbCd")); 出力結果:true
■文字列の一部を別の文字列に置換する
replace(CharSequence target, CharSequence replacement)
String str = "abcdefbc"; str = str.replace("bc", "012"); System.out.println(str); 出力結果:a012def012 ※targetが複数存在する場合、すべて置換される点に注意。
■文字列の一部を抽出する
substring(int beginIndex)
substring(int beginIndex, int endIndex)
StringBulderのdelete、replaceと同様に、endIndexは含まれないことに注意。
String str = "abcdef" str = str.substring(3); System.out.println(str); 出力結果:def String str = "abcdef" str = str.substring(3, 5); // endIndexを指定するケース System.out.println(str); 出力結果:cd String str = "abcdef" str = str.substring(3, 7); // endIndexが範囲外のケース System.out.println(str); 出力結果:Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 7 String str = "abcdef" str = str.substring(3, 3); // startIndex、endIndexに同じ値を指定したケース System.out.println(str); 出力結果: ←長さ0の文字列を指定したことになり何も出力されない。