広告

Java : String (文字列) - API使用例

String (Java SE 22 & JDK 22) の使い方まとめです。
ほとんどのメソッドにサンプルコードがあります。
API仕様書のおともにどうぞ。


概要

Stringクラスは文字列を表します。 Javaプログラム内の"abc"などのリテラル文字列はすべて、このクラスのインスタンスとして実行されます。

クラス構成

String は文字列を表現するクラスです。
文字列の生成には、通常は String のコンストラクタは使わずにリテラル表記を使います。

final var s = "abcde";
System.out.println(s); // "abcde"

// 大文字に変換。
final var upper = s.toUpperCase();
System.out.println(upper); // "ABCDE"

文字列に関しては以下の記事も参考にしていただけたら幸いです。


【サロゲート文字について】

文字列を構成する文字は、基本的には char 型で表現できます。

final char c1 = 'a';
final char c2 = 'あ';

char のサイズは 2バイトです。
しかし、そのサイズにおさまらない文字が存在します。

例えば、"😊" という文字です。

final var surrogate = "\uD83D\uDE0A"; // "😊"という1文字
System.out.println(surrogate); // "😊"
System.out.println(surrogate.length()); // 2

final var chars = surrogate.chars().toArray();
System.out.println(Arrays.toString(chars)); // [55357, 56842]

文字自体は1文字ですが、lengthchars では 2文字として結果が返ります。
このような問題があるため、Javaでは int 型を使ったコードポイントが追加されました。

int は 4バイトあるので、すべての文字がおさまります。

final var surrogate = "\uD83D\uDE0A"; // "😊"という1文字
System.out.println(surrogate); // "😊"

final var codePoints = surrogate.codePoints().toArray();
System.out.println(Arrays.toString(codePoints)); // [128522]

Stringクラスにも、上記の codePoints のように、文字を int で扱う API がいろいろと追加されています。
基本的には char のAPIは使わずに、int のコードポイント API を使うことをおすすめします。


フィールド

static final Comparator<String> CASE_INSENSITIVE_ORDER

compareToIgnoreCaseと同様にStringオブジェクトを順序付けするComparator。

final var list = new ArrayList<String>();
list.add("Tree");
list.add("book");
list.add("stone");
list.add("Cake");

System.out.println(list); // [Tree, book, stone, Cake]

list.sort(Comparator.naturalOrder());
System.out.println(list); // [Cake, Tree, book, stone]

list.sort(String.CASE_INSENSITIVE_ORDER);
System.out.println(list); // [book, Cake, stone, Tree]
final var list = new ArrayList<String>();
list.add("D");
list.add("c");
list.add("B");
list.add("a");

System.out.println(list); // [D, c, B, a]

list.sort(Comparator.naturalOrder());
System.out.println(list); // [B, D, a, c]

list.sort(String.CASE_INSENSITIVE_ORDER);
System.out.println(list); // [a, B, c, D]

コンストラクタ

String ()

新しく生成されたStringオブジェクトを初期化して、空の文字シーケンスを表すようにします。

API仕様に「このコンストラクタを使う必要はありません」とあるので代わりにリテラル表記を使いましょう。

// おすすめ
final var s = "";
System.out.println(s); // ""
System.out.println(s.isEmpty()); // true
// 間違いではありませんが、あまりおすすめしません。
final var s = new String();
System.out.println(s); // ""
System.out.println(s.isEmpty()); // true

String (byte[] bytes)

default charsetを使用して指定したバイト配列をデコードすることによって、新しいStringを作成します。

final var bytes = "abcde".getBytes();
System.out.println(Arrays.toString(bytes)); // [97, 98, 99, 100, 101]

final var s = new String(bytes);
System.out.println(s); // "abcde"
System.out.println(Charset.defaultCharset()); // UTF-8

final var sjis = "☆◇△".getBytes("Shift_JIS");

// [-127, -103, -127, -98, -127, -94]
System.out.println(Arrays.toString(sjis));
System.out.println(new String(sjis)); // "������" <- 文字化け

final var utf8 = "☆◇△".getBytes(StandardCharsets.UTF_8);

// [-30, -104, -122, -30, -105, -121, -30, -106, -77]
System.out.println(Arrays.toString(utf8));
System.out.println(new String(utf8)); // "☆◇△"

String (byte[] ascii, int hibyte)

非推奨。 このメソッドでは、バイトから文字への変換が正しく行われません。

非推奨です。

String (byte[] bytes, int offset, int length)

default charsetを使用して、指定したバイトのサブ配列をデコードすることによって、新しいStringを構成します。

final var bytes = "abcd".getBytes();
System.out.println(Arrays.toString(bytes)); // [97, 98, 99, 100]

System.out.println(new String(bytes, 0, 0)); // ""
System.out.println(new String(bytes, 0, 1)); // "a"
System.out.println(new String(bytes, 0, 2)); // "ab"
System.out.println(new String(bytes, 0, 3)); // "abc"
System.out.println(new String(bytes, 0, 4)); // "abcd"

System.out.println(new String(bytes, 1, 3)); // "bcd"
System.out.println(new String(bytes, 2, 2)); // "cd"
System.out.println(new String(bytes, 3, 1)); // "d"
System.out.println(new String(bytes, 4, 0)); // ""
System.out.println(Charset.defaultCharset()); // UTF-8

final var bytes = "☆◇△".getBytes();

// [-30, -104, -122, -30, -105, -121, -30, -106, -77]
System.out.println(Arrays.toString(bytes));

final var s = new String(bytes, 3, 6);
System.out.println(s); // "◇△"

String (byte[] ascii, int hibyte, int offset, int count)

非推奨。 このメソッドでは、バイトから文字への変換が正しく行われません。

非推奨です。

String (byte[] bytes, int offset, int length, String charsetName)

指定された文字セットを使用して、指定されたバイト部分配列をデコードすることによって、新しいStringを構築します。

下記のメソッドを組み合わせた挙動となります。
それぞれのコード例をご確認ください。

String (byte[] bytes, int offset, int length, Charset charset)

指定された文字セットを使用して、指定された部分バイト配列を復号化することにより、新しいStringを構築します。

下記のメソッドを組み合わせた挙動となります。
それぞれのコード例をご確認ください。

String (byte[] bytes, String charsetName)

指定された文字セットを使用して、指定されたバイト配列をデコードすることにより、新しいStringを構築します。

final var bytes = "abcd".getBytes("UTF-8");
System.out.println(Arrays.toString(bytes)); // [97, 98, 99, 100]

System.out.println(new String(bytes, "UTF-8")); // "abcd"
final var sjis = "☆◇△".getBytes("Shift_JIS");

// [-127, -103, -127, -98, -127, -94]
System.out.println(Arrays.toString(sjis));
System.out.println(new String(sjis, "Shift_JIS")); // "☆◇△"

final var utf8 = "☆◇△".getBytes("UTF-8");

// [-30, -104, -122, -30, -105, -121, -30, -106, -77]
System.out.println(Arrays.toString(utf8));
System.out.println(new String(utf8, "UTF-8")); // "☆◇△"

String (byte[] bytes, Charset charset)

指定された文字セットを使用して、指定されたバイト配列をデコードすることにより、新しいStringを構築します。

final var bytes = "abcd".getBytes(StandardCharsets.UTF_8);
System.out.println(Arrays.toString(bytes)); // [97, 98, 99, 100]

System.out.println(new String(bytes, StandardCharsets.UTF_8)); // "abcd"
final var sjis = "☆◇△".getBytes(Charset.forName("Shift_JIS"));

// [-127, -103, -127, -98, -127, -94]
System.out.println(Arrays.toString(sjis));
System.out.println(new String(sjis, Charset.forName("Shift_JIS"))); // "☆◇△"

final var utf8 = "☆◇△".getBytes(StandardCharsets.UTF_8);

// [-30, -104, -122, -30, -105, -121, -30, -106, -77]
System.out.println(Arrays.toString(utf8));
System.out.println(new String(utf8, StandardCharsets.UTF_8)); // "☆◇△"

String (char[] value)

新しいStringを割り当てて、これが文字配列引数に現在含まれている文字シーケンスを表すようにします。

final char[] value = {'a', 'b', 'c', 'd'};
System.out.println(Arrays.toString(value)); // [a, b, c, d]

final var s = new String(value);
System.out.println(s); // "abcd"
final char[] value = {'☆', '◇', '△'};
System.out.println(Arrays.toString(value)); // [☆, ◇, △]

final var s = new String(value);
System.out.println(s); // "☆◇△"

String (char[] value, int offset, int count)

文字配列引数の部分配列からなる文字を含む新しいStringを割り当てます。

final char[] value = {'a', 'b', 'c', 'd'};
System.out.println(Arrays.toString(value)); // [a, b, c, d]

System.out.println(new String(value, 0, 0)); // ""
System.out.println(new String(value, 0, 1)); // "a"
System.out.println(new String(value, 0, 2)); // "ab"
System.out.println(new String(value, 0, 3)); // "abc"
System.out.println(new String(value, 0, 4)); // "abcd"

System.out.println(new String(value, 1, 3)); // "bcd"
System.out.println(new String(value, 2, 2)); // "cd"
System.out.println(new String(value, 3, 1)); // "d"
System.out.println(new String(value, 4, 0)); // ""
final char[] value = {'☆', '◇', '△', '▽'};
System.out.println(Arrays.toString(value)); // [☆, ◇, △, ▽]

final var s = new String(value, 1, 2);
System.out.println(s); // "◇△"

String (int[] codePoints, int offset, int count)

Unicodeコード・ポイント配列引数の部分配列からなる文字を含む新しいStringを割り当てます。

final var codePoints = "abcd".codePoints().toArray();
System.out.println(Arrays.toString(codePoints)); // [97, 98, 99, 100]

System.out.println(new String(codePoints, 0, 0)); // ""
System.out.println(new String(codePoints, 0, 1)); // "a"
System.out.println(new String(codePoints, 0, 2)); // "ab"
System.out.println(new String(codePoints, 0, 3)); // "abc"
System.out.println(new String(codePoints, 0, 4)); // "abcd"

System.out.println(new String(codePoints, 1, 3)); // "bcd"
System.out.println(new String(codePoints, 2, 2)); // "cd"
System.out.println(new String(codePoints, 3, 1)); // "d"
System.out.println(new String(codePoints, 4, 0)); // ""
// サロゲート・コード・ポイントの例です。
final var str = "ab\uD83D\uDE0Acd";
System.out.println(str); // "ab😊cd"

final var codePoints = str.codePoints().toArray();
System.out.println(Arrays.toString(codePoints)); // [97, 98, 128522, 99, 100]

final var s = new String(codePoints, 1, 3);
System.out.println(s); // "b😊c"

String (String original)

新しく生成されたStringオブジェクトを初期化して、引数と同じ文字シーケンスを表すようにします。つまり、新しく作成された文字列は引数文字列のコピーになります。

API仕様に「このコンストラクタを使う必要はありません」とあるので代わりにリテラル表記を使いましょう。

// おすすめ
final var s = "abcd";
System.out.println(s); // "abcd"
// 間違いではありませんが、あまりおすすめしません。
final var s = new String("abcd");
System.out.println(s); // "abcd"

String (StringBuffer buffer)

文字列バッファ引数に現在含まれている文字列を持つ新しい文字列を構築します。

final var buffer = new StringBuffer();
buffer.append("num : ");
buffer.append(123);

final var s = new String(buffer);
System.out.println(s); // "num : 123"

String (StringBuilder builder)

文字列ビルダー引数に現在含まれている文字列を持つ新しい文字列を割り当てます。

final var builder = new StringBuilder();
builder.append("num : ");
builder.append(123);

final var s = new String(builder);
System.out.println(s); // "num : 123"

メソッド

char charAt (int index)

指定されたインデックスのchar値を返します。

final var s = "abc";
//s.charAt(-1); // IndexOutOfBoundsException
System.out.println(s.charAt(0)); // a
System.out.println(s.charAt(1)); // b
System.out.println(s.charAt(2)); // c
//s.charAt(3); // IndexOutOfBoundsException
final var s = "☆◇△";
System.out.println(s.charAt(0)); // ☆
System.out.println(s.charAt(1)); // ◇
System.out.println(s.charAt(2)); // △
// サロゲート・コード・ポイントの例です。
final var surrogate = "\uD83D\uDE0A"; // "😊"という1文字
System.out.println(surrogate); // "😊"

final var s = surrogate + "ab";
System.out.println(s); // "😊ab"

final var ret1 = s.charAt(0);
System.out.println(ret1); // ? <- 文字化け
System.out.println(Integer.toHexString(ret1)); // d83d

final var ret2 = s.charAt(1);
System.out.println(ret2); // ? <- 文字化け
System.out.println(Integer.toHexString(ret2)); // de0a

final var ret3 = s.charAt(2);
System.out.println(ret3); // a

final var ret4 = s.charAt(3);
System.out.println(ret4); // b

//s.charAt(4); // IndexOutOfBoundsException

IntStream chars ()

このシーケンスのchar値をゼロ拡張したintを含むストリームを返します。

サロゲート・コード・ポイントは1文字としては解釈されないので注意。
もし1文字として解釈したい場合は、codePoints を代わりにご使用ください。

// Unicode : 0x61 = a, 0x62 = b, 0x63 = c, 0x64 = d, 0x65 = e
final var ret = "abcde".chars();

// [61, 62, 63, 64, 65]
System.out.println(ret.mapToObj(Integer::toHexString).toList());
// サロゲート・コード・ポイントの例です。
final var surrogate = "\uD83D\uDE0A"; // "😊"という1文字
System.out.println(surrogate); // "😊"

final var s = "ab" + surrogate;
System.out.println(s); // "ab😊"

final var ret = s.chars();

ret.forEach(c -> {
    System.out.printf("%x : %c%n", c, c);
});

// 結果
// ↓
// "61 : a"
// "62 : b"
// "d83d : ?" <- 文字化け
// "de0a : ?" <- 文字化け

int codePointAt (int index)

指定されたインデックス位置の文字(Unicodeコード・ポイント)を返します。

final var s = "abc";
//s.codePointAt(-1); // IndexOutOfBoundsException
System.out.printf("%c%n", s.codePointAt(0)); // a
System.out.printf("%c%n", s.codePointAt(1)); // b
System.out.printf("%c%n", s.codePointAt(2)); // c
//s.codePointAt(3); // IndexOutOfBoundsException
// サロゲート・コード・ポイントの例です。
final var surrogate = "\uD83D\uDE0A"; // "😊"という1文字
System.out.println(surrogate); // "😊"

final var s = surrogate + "ab";
System.out.println(s); // "😊ab"

final var ret1 = s.codePointAt(0);
System.out.printf("%c%n", ret1); // 😊
System.out.println(Integer.toHexString(ret1)); // 1f60a

final var ret2 = s.codePointAt(1);
System.out.printf("%c%n", ret2); // ? <- 文字化け
System.out.println(Integer.toHexString(ret2)); // de0a

final var ret3 = s.codePointAt(2);
System.out.printf("%c%n", ret3); // a

final var ret4 = s.codePointAt(3);
System.out.printf("%c%n", ret4); // b

//s.codePointAt(4); // IndexOutOfBoundsException

int codePointBefore (int index)

指定されたインデックスの前の文字(Unicodeコード・ポイント)を返します。

final var s = "abc";

//s.codePointBefore(0); // IndexOutOfBoundsException
System.out.printf("%c%n", s.codePointBefore(1));  // a
System.out.printf("%c%n", s.codePointBefore(2));  // b
System.out.printf("%c%n", s.codePointBefore(3));  // c
//s.codePointBefore(4); // IndexOutOfBoundsException
// サロゲート・コード・ポイントの例です。
final var surrogate = "\uD83D\uDE0A"; // "😊"という1文字
System.out.println(surrogate); // "😊"

final var s = surrogate + "ab";
System.out.println(s); // "😊ab"

//s.codePointBefore(0); // IndexOutOfBoundsException

final var ret1 = s.codePointBefore(1);
System.out.printf("%c%n", ret1); // ? <- 文字化け
System.out.println(Integer.toHexString(ret1)); // d83d

final var ret2 = s.codePointBefore(2);
System.out.printf("%c%n", ret2); // 😊
System.out.println(Integer.toHexString(ret2)); // 1f60a

final var ret3 = s.codePointBefore(3);
System.out.printf("%c%n", ret3); // a

final var ret4 = s.codePointBefore(4);
System.out.printf("%c%n", ret4); // b

//s.codePointBefore(5); // IndexOutOfBoundsException

int codePointCount (int beginIndex, int endIndex)

このStringの指定されたテキスト範囲のUnicodeコード・ポイントの数を返します。

final var s = "abc";
System.out.println(s.codePointCount(0, 3));  // 3
System.out.println(s.codePointCount(1, 2));  // 1
//s.codePointCount(-1, 3);  // IndexOutOfBoundsException
//s.codePointCount(0, 4);  // IndexOutOfBoundsException
// サロゲート・コード・ポイントの例です。
final var surrogate = "\uD83D\uDE0A"; // "😊"という1文字
System.out.println(surrogate); // "😊"

final var s = surrogate + "ab";
System.out.println(s); // "😊ab"

System.out.println(s.codePointCount(0, 1));  // 1
System.out.println(s.codePointCount(0, 2));  // 1
System.out.println(s.codePointCount(0, 3));  // 2
System.out.println(s.codePointCount(0, 4));  // 3
//s.codePointCount(0, 5);  // IndexOutOfBoundsException

IntStream codePoints ()

このシーケンスからコード・ポイント値のストリームを返します。

// Unicode : 0x61 = a, 0x62 = b, 0x63 = c, 0x64 = d, 0x65 = e
final var ret = "abcde".codePoints();

// [61, 62, 63, 64, 65]
System.out.println(ret.mapToObj(Integer::toHexString).toList());
// サロゲート・コード・ポイントの例です。
final var surrogate = "\uD83D\uDE0A"; // "😊"という1文字
System.out.println(surrogate); // "😊"

final var s = "ab" + surrogate;
System.out.println(s); // "ab😊"

final var ret = s.codePoints();

ret.forEach(c -> {
    System.out.printf("%x : %c%n", c, c);
});

// 結果
// ↓
// "61 : a"
// "62 : b"
// "1f60a : 😊"

int compareTo (String anotherString)

2つの文字列を辞書的に比較します。

System.out.println("Cake".compareTo("Book")); // 1
System.out.println("Cake".compareTo("Stone")); // -16

System.out.println("Book".compareTo("Book")); // 0
System.out.println("Book".compareTo("book")); // -32
System.out.println("a".compareTo("a")); // 0
System.out.println("a".compareTo("A")); // 32
System.out.println("A".compareTo("a")); // -32
System.out.println("A".compareTo("A")); // 0

System.out.println("a".compareTo("b")); // -1
System.out.println("b".compareTo("a")); // 1

System.out.println("A".compareTo("b")); // -33
System.out.println("b".compareTo("A")); // 33

System.out.println("a".compareTo("B")); // 31
System.out.println("B".compareTo("a")); // -31

int compareToIgnoreCase (String str)

大文字と小文字の区別なしで、2つの文字列を辞書的に比較します。

System.out.println("Cake".compareToIgnoreCase("Book")); // 1
System.out.println("Cake".compareToIgnoreCase("Stone")); // -16

System.out.println("Book".compareToIgnoreCase("Book")); // 0
System.out.println("Book".compareToIgnoreCase("book")); // 0
System.out.println("a".compareToIgnoreCase("a")); // 0
System.out.println("a".compareToIgnoreCase("A")); // 0
System.out.println("A".compareToIgnoreCase("a")); // 0
System.out.println("A".compareToIgnoreCase("A")); // 0

System.out.println("a".compareToIgnoreCase("b")); // -1
System.out.println("b".compareToIgnoreCase("a")); // 1

System.out.println("A".compareToIgnoreCase("b")); // -1
System.out.println("b".compareToIgnoreCase("A")); // 1

System.out.println("a".compareToIgnoreCase("B")); // -1
System.out.println("B".compareToIgnoreCase("a")); // 1

String concat (String str)

指定された文字列をこの文字列の最後に連結します。

final var ret1 = "cares".concat("s");
System.out.println(ret1); // "caress"

final var ret2 = "to".concat("get").concat("her");
System.out.println(ret2); // "together"

boolean contains (CharSequence s)

この文字列が指定されたchar値のシーケンスを含む場合に限りtrueを返します。

final var s = "abcde";

System.out.println(s.contains("a")); // true
System.out.println(s.contains("abc")); // true
System.out.println(s.contains("z")); // false
System.out.println(s.contains("ace")); // false
final var s = "☆◇△";

System.out.println(s.contains("☆")); // true
System.out.println(s.contains("◇△")); // true
System.out.println(s.contains("▽")); // false
System.out.println(s.contains("a")); // false

boolean contentEquals (CharSequence cs)

この文字列と指定されたCharSequenceを比較します。

final var s = "abc";
System.out.println(s.contentEquals("abc")); // true
System.out.println(s.contentEquals("xyz")); // false

final var cs = new StringBuilder();
cs.append('a');

System.out.println(s.contentEquals(cs)); // false

cs.append('b');
cs.append('c');

System.out.println(s.contentEquals(cs)); // true

boolean contentEquals (StringBuffer sb)

この文字列と指定されたStringBufferを比較します。

final var s = "abc";

final var sb = new StringBuffer();
sb.append('a');

System.out.println(s.contentEquals(sb)); // false

sb.append('b');
sb.append('c');

System.out.println(s.contentEquals(sb)); // true

static String copyValueOf (char[] data)

valueOf(char[])と同等です。

final char[] data = {'a', 'b', 'c'};
final var ret = String.copyValueOf(data);

System.out.println(ret); // "abc"
final char[] data = {'☆', '◇', '△'};
final var ret = String.copyValueOf(data);

System.out.println(ret); // "☆◇△"

static String copyValueOf (char[] data, int offset, int count)

valueOf(char[], int, int)と同等です。

final char[] data = {'a', 'b', 'c'};

System.out.println(String.copyValueOf(data, 0, 0)); // ""
System.out.println(String.copyValueOf(data, 0, 1)); // "a"
System.out.println(String.copyValueOf(data, 0, 2)); // "ab"
System.out.println(String.copyValueOf(data, 0, 3)); // "abc"
//String.copyValueOf(data, 0, 4); // IndexOutOfBoundsException

System.out.println(String.copyValueOf(data, 1, 2)); // "bc"
System.out.println(String.copyValueOf(data, 2, 1)); // "c"
final char[] data = {'☆', '◇', '△'};

System.out.println(String.copyValueOf(data, 0, 3)); // "☆◇△"
System.out.println(String.copyValueOf(data, 1, 2)); // "◇△"

Optional<String> describeConstable ()

このインスタンス自体の名目記述子を含むOptionalを返します。

final var ret = "abcd".describeConstable();
System.out.println(ret); // Optional[abcd]

boolean endsWith (String suffix)

この文字列が、指定された接尾辞で終るかどうかを判定します。

final var s = "abcd";

System.out.println(s.endsWith("abcd")); // true
System.out.println(s.endsWith("bcd")); // true
System.out.println(s.endsWith("cd")); // true
System.out.println(s.endsWith("d")); // true
System.out.println(s.endsWith("")); // true

System.out.println(s.endsWith("a")); // false
System.out.println(s.endsWith("ab")); // false
System.out.println(s.endsWith("abc")); // false

boolean equals (Object anObject)

この文字列と指定されたオブジェクトを比較します。

final var s = "abc";

System.out.println(s.equals("a")); // false
System.out.println(s.equals("ab")); // false
System.out.println(s.equals("abc")); // true
System.out.println(s.equals("abcd")); // false

System.out.println(s.equals("ABC")); // false
final var s = "abc";
final var sb = new StringBuilder("abc");

System.out.println(s.equals(sb)); // false
System.out.println(s.contentEquals(sb)); // true

boolean equalsIgnoreCase (String anotherString)

大文字と小文字を区別せずに、このStringを別のStringと比較します。

final var s = "abc";

System.out.println(s.equalsIgnoreCase("")); // false
System.out.println(s.equalsIgnoreCase("a")); // false
System.out.println(s.equalsIgnoreCase("ab")); // false
System.out.println(s.equalsIgnoreCase("abc")); // true
System.out.println(s.equalsIgnoreCase("abcd")); // false

System.out.println(s.equalsIgnoreCase("ABC")); // true

static String format (String format, Object... args)

指定された書式の文字列と引数を使って、書式付き文字列を返します。

System.out.println(String.format("b : %b", true));  // "b : true"
System.out.println(String.format("B : %B", false)); // "B : FALSE"

System.out.println(String.format("h : %h", "abcd")); // "h : 2d9442"
System.out.println(String.format("H : %H", LocalTime.of(12, 30))); // "H : 6103F8ED"

System.out.println(String.format("s : %s", "abcd")); // "s : abcd"
System.out.println(String.format("S : %S", "abcd")); // "S : ABCD"

System.out.println(String.format("c : %c", 'z')); // "c : z"
System.out.println(String.format("C : %C", 'z')); // "C : Z"

System.out.println(String.format("d : %d", 123)); // "d : 123"
System.out.println(String.format("o : %o", 123)); // "o : 173"

System.out.println(String.format("x : %x", 123)); // "x : 7b"
System.out.println(String.format("X : %X", 123)); // "X : 7B"

System.out.println(String.format("e : %e", 0.12)); // "e : 1.200000e-01"
System.out.println(String.format("E : %E", 0.12)); // "E : 1.200000E-01"

System.out.println(String.format("f : %f", 1.400004)); // "f : 1.400004"
System.out.println(String.format("g : %g", 1.400004)); // "g : 1.40000"

System.out.println(String.format("a : %a", 0.12)); // "a : 0x1.eb851eb851eb8p-4"
System.out.println(String.format("A : %A", 0.12)); // "A : 0X1.EB851EB851EB8P-4"

final var date = LocalDate.of(2100, 3, 10);
System.out.println(date); // 2100-03-10
System.out.println(String.format("%tY %tm %te", date, date, date)); // "2100 03 10"

static String format (Locale l, String format, Object... args)

指定されたロケール、書式文字列、および引数を使って、フォーマットされた文字列を返します。

final var date = LocalDate.of(2100, 3, 10);
System.out.println(date); // 2100-03-10

final var ret1 = String.format(
        Locale.JAPAN, "%tY %tB %te %tA", date, date, date, date);
System.out.println(ret1); // 2100 3月 10 水曜日

final var ret2 = String.format(
        Locale.ENGLISH, "%tY %tB %te %tA", date, date, date, date);
System.out.println(ret2); // 2100 March 10 Wednesday

String formatted (Object... args)

この文字列を書式文字列として使用し、指定された引数を書式設定します。

System.out.println("b : %b".formatted(true));  // "b : true"
System.out.println("B : %B".formatted(false)); // "B : FALSE"

System.out.println("h : %h".formatted("abcd")); // "h : 2d9442"
System.out.println("H : %H".formatted(LocalTime.of(12, 30))); // "H : 6103F8ED"

System.out.println("s : %s".formatted("abcd")); // "s : abcd"
System.out.println("S : %S".formatted("abcd")); // "S : ABCD"

System.out.println("c : %c".formatted('z')); // "c : z"
System.out.println("C : %C".formatted('z')); // "C : Z"

System.out.println("d : %d".formatted(123)); // "d : 123"
System.out.println("o : %o".formatted(123)); // "o : 173"

System.out.println("x : %x".formatted(123)); // "x : 7b"
System.out.println("X : %X".formatted(123)); // "X : 7B"

System.out.println("e : %e".formatted(0.12)); // "e : 1.200000e-01"
System.out.println("E : %E".formatted(0.12)); // "E : 1.200000E-01"

System.out.println("f : %f".formatted(1.400004)); // "f : 1.400004"
System.out.println("g : %g".formatted(1.400004)); // "g : 1.40000"

System.out.println("a : %a".formatted(0.12)); // "a : 0x1.eb851eb851eb8p-4"
System.out.println("A : %A".formatted(0.12)); // "A : 0X1.EB851EB851EB8P-4"

final var date = LocalDate.of(2100, 3, 10);
System.out.println(date); // 2100-03-10
System.out.println("%tY %tm %te".formatted(date, date, date)); // "2100 03 10"

byte[] getBytes ()

default charsetを使用してこのStringをバイトのシーケンスにエンコードし、結果を新しいバイト配列に格納します。

final var ret = "abcd".getBytes();

// [97, 98, 99, 100]
System.out.println(Arrays.toString(ret));
System.out.println(Charset.defaultCharset()); // UTF-8

final var s = "☆◇△";
final var ret = s.getBytes();

// [-30, -104, -122, -30, -105, -121, -30, -106, -77]
System.out.println(Arrays.toString(ret));

final var utf8 = s.getBytes(StandardCharsets.UTF_8);
System.out.println(Arrays.equals(ret, utf8)); // true

final var sjis = s.getBytes("Shift_JIS");
System.out.println(Arrays.equals(ret, sjis)); // false

void getBytes (int srcBegin, int srcEnd, byte[] dst, int dstBegin)

非推奨。 このメソッドでは、文字からバイトへの変換が正しく行われません。

非推奨です。

byte[] getBytes (String charsetName)

指定された文字セットを使用してこのStringをバイト・シーケンスにエンコードし、結果を新規バイト配列に格納します。

final var ret = "abcd".getBytes("UTF-8");

// [97, 98, 99, 100]
System.out.println(Arrays.toString(ret));
final var s = "☆◇△";

final var utf8 = s.getBytes("UTF-8");

// [-30, -104, -122, -30, -105, -121, -30, -106, -77]
System.out.println(Arrays.toString(utf8));
System.out.println(new String(utf8, "UTF-8")); // "☆◇△"

final var sjis = s.getBytes("Shift_JIS");

// [-127, -103, -127, -98, -127, -94]
System.out.println(Arrays.toString(sjis));
System.out.println(new String(sjis, "Shift_JIS")); // "☆◇△"

byte[] getBytes (Charset charset)

指定された文字セットを使用してこのStringをバイト・シーケンスに符号化し、結果を新規バイト配列に格納します。

final var ret = "abcd".getBytes(StandardCharsets.UTF_8);

// [97, 98, 99, 100]
System.out.println(Arrays.toString(ret));
final var s = "☆◇△";

final var utf8 = s.getBytes(StandardCharsets.UTF_8);

// [-30, -104, -122, -30, -105, -121, -30, -106, -77]
System.out.println(Arrays.toString(utf8));
System.out.println(new String(utf8, StandardCharsets.UTF_8)); // "☆◇△"

final var sjis = s.getBytes(Charset.forName("Shift_JIS"));

// [-127, -103, -127, -98, -127, -94]
System.out.println(Arrays.toString(sjis));
System.out.println(new String(sjis, Charset.forName("Shift_JIS"))); // "☆◇△"

void getChars (int srcBegin, int srcEnd, char[] dst, int dstBegin)

この文字列から、コピー先の文字配列に文字をコピーします。

final var s = "abcde";

final var chars1 = new char[5];
s.getChars(0, 5, chars1, 0);
System.out.println(Arrays.toString(chars1)); // [a, b, c, d, e]

final var chars2 = new char[5];
s.getChars(1, 3, chars2, 0);
System.out.println(Arrays.toString(chars2)); // [b, c,  ,  ,  ]

final var chars3 = new char[5];
s.getChars(0, 2, chars3, 3);
System.out.println(Arrays.toString(chars3)); // [ ,  ,  , a, b]

int hashCode ()

この文字列のハッシュ・コードを返します。

System.out.println("".hashCode());  // 0
System.out.println("a".hashCode()); // 97
System.out.println("ab".hashCode()); // 3105
System.out.println("123".hashCode()); // 48690
final var s = """
        abcdefghijklmnopqrstuvwxyz
        ABCDEFGHIJKLMNOPQRSTUVWXYZ
        123456790
        """;

System.out.println(s.hashCode()); // 573751039

String indent (int n)

nの値に基づいてこの文字列の各行のインデントを調整し、行の終了文字を正規化します。

final var s = """
        Book
        Cake
        Tree
        Stone
        """;
// """
// Cake
// Tree
// Stone
// """
System.out.println(s);

// """
// Book
// Cake
// Tree
// Stone
// """
System.out.println(s.indent(0));

// """
//  Book
//  Cake
//  Tree
//  Stone
// """
System.out.println(s.indent(1));

// """
//   Book
//   Cake
//   Tree
//   Stone
// """
System.out.println(s.indent(2));

int indexOf (int ch)

この文字列内で、指定された文字が最初に出現する位置のインデックスを返します。

final var s = "abcXY";

System.out.println(s.indexOf('a')); // 0
System.out.println(s.indexOf('b')); // 1
System.out.println(s.indexOf('c')); // 2
System.out.println(s.indexOf('d')); // -1
System.out.println(s.indexOf('X')); // 3
System.out.println(s.indexOf('Y')); // 4
System.out.println(s.indexOf('Z')); // -1
final var s = "abcabc";
System.out.println(s.indexOf('a')); // 0
System.out.println(s.indexOf('b')); // 1
System.out.println(s.indexOf('c')); // 2
// サロゲート・コード・ポイントの例です。
final var surrogate = "\uD83D\uDE0A"; // "😊"という1文字
System.out.println(surrogate); // "😊"

final var s = "a" + surrogate + "b";
System.out.println(s); // "a😊b"

System.out.println(s.indexOf('a')); // 0

// 0x1f60a = 😊
System.out.println(s.indexOf(0x1f60a)); // 1

System.out.println(s.indexOf('b')); // 3

int indexOf (int ch, int fromIndex)

この文字列内で、指定されたインデックスから検索を開始し、指定された文字が最初に出現する位置のインデックスを返します。

final var s = "abcabc";

System.out.println(s.indexOf('a', -1)); // 0
System.out.println(s.indexOf('a', 0)); // 0
System.out.println(s.indexOf('a', 1)); // 3
System.out.println(s.indexOf('a', 2)); // 3
System.out.println(s.indexOf('a', 3)); // 3
System.out.println(s.indexOf('a', 4)); // -1
System.out.println(s.indexOf('a', 5)); // -1
System.out.println(s.indexOf('a', 6)); // -1

System.out.println(s.indexOf('b', 0)); // 1
System.out.println(s.indexOf('b', 1)); // 1
System.out.println(s.indexOf('b', 2)); // 4
System.out.println(s.indexOf('b', 3)); // 4
System.out.println(s.indexOf('b', 4)); // 4
System.out.println(s.indexOf('b', 5)); // -1

System.out.println(s.indexOf('c', 0)); // 2
System.out.println(s.indexOf('c', 1)); // 2
System.out.println(s.indexOf('c', 2)); // 2
System.out.println(s.indexOf('c', 3)); // 5
System.out.println(s.indexOf('c', 4)); // 5
System.out.println(s.indexOf('c', 5)); // 5
// サロゲート・コード・ポイントの例です。
final var surrogate = "\uD83D\uDE0A"; // "😊"という1文字
System.out.println(surrogate); // "😊"

final var s = "a" + surrogate + "b";
System.out.println(s); // "a😊b"

System.out.println(s.indexOf('a', 0)); // 0
System.out.println(s.indexOf('a', 1)); // -1
System.out.println(s.indexOf('a', 2)); // -1
System.out.println(s.indexOf('a', 3)); // -1

// 0x1f60a = 😊
System.out.println(s.indexOf(0x1f60a, 0)); // 1
System.out.println(s.indexOf(0x1f60a, 1)); // 1
System.out.println(s.indexOf(0x1f60a, 2)); // -1
System.out.println(s.indexOf(0x1f60a, 3)); // -1

System.out.println(s.indexOf('b', 0)); // 3
System.out.println(s.indexOf('b', 1)); // 3
System.out.println(s.indexOf('b', 2)); // 3
System.out.println(s.indexOf('b', 3)); // 3
System.out.println(s.indexOf('b', 4)); // -1

int indexOf (int ch, int beginIndex, int endIndex)

beginIndexで検索を開始し、endIndexの前に停止して、指定した文字の最初の出現の文字列内の索引を返します。

関連 : indexOf(int ch, int fromIndex)

final var s = "abcabc";

System.out.println(s.indexOf('b', 0, 6)); // 1
System.out.println(s.indexOf('b', 1, 6)); // 1
System.out.println(s.indexOf('b', 2, 6)); // 4
System.out.println(s.indexOf('b', 3, 6)); // 4
System.out.println(s.indexOf('b', 4, 6)); // 4
System.out.println(s.indexOf('b', 5, 6)); // -1
System.out.println(s.indexOf('b', 6, 6)); // -1

System.out.println(s.indexOf('b', 0, 0)); // -1
System.out.println(s.indexOf('b', 0, 1)); // -1
System.out.println(s.indexOf('b', 0, 2)); // 1
System.out.println(s.indexOf('b', 0, 3)); // 1
System.out.println(s.indexOf('b', 0, 4)); // 1
System.out.println(s.indexOf('b', 0, 5)); // 1
System.out.println(s.indexOf('b', 0, 6)); // 1

int indexOf (String str)

この文字列内で、指定された部分文字列が最初に出現する位置のインデックスを返します。

final var s = "abcabc";

System.out.println(s.indexOf("a")); // 0
System.out.println(s.indexOf("ab")); // 0
System.out.println(s.indexOf("abc")); // 0
System.out.println(s.indexOf("bc")); // 1
System.out.println(s.indexOf("c")); // 2
System.out.println(s.indexOf("cab")); // 2

System.out.println(s.indexOf("abcd")); // -1
System.out.println(s.indexOf("ac")); // -1
System.out.println(s.indexOf("z")); // -1
// サロゲート・コード・ポイントの例です。
final var surrogate = "\uD83D\uDE0A"; // "😊"という1文字
System.out.println(surrogate); // "😊"

final var s = "a" + surrogate + "b";
System.out.println(s); // "a😊b"

System.out.println(s.indexOf("a")); // 0
System.out.println(s.indexOf(surrogate)); // 1
System.out.println(s.indexOf("b")); // 3

int indexOf (String str, int fromIndex)

指定されたインデックス以降で、指定された部分文字列がこの文字列内で最初に出現する位置のインデックスを返します。

final var s = "abcabc";

System.out.println(s.indexOf("ab", -1)); // 0
System.out.println(s.indexOf("ab", 0)); // 0
System.out.println(s.indexOf("ab", 1)); // 3
System.out.println(s.indexOf("ab", 2)); // 3
System.out.println(s.indexOf("ab", 3)); // 3
System.out.println(s.indexOf("ab", 4)); // -1
System.out.println(s.indexOf("ab", 5)); // -1
System.out.println(s.indexOf("ab", 6)); // -1

System.out.println(s.indexOf("bc", 0)); // 1
System.out.println(s.indexOf("bc", 1)); // 1
System.out.println(s.indexOf("bc", 2)); // 4
// サロゲート・コード・ポイントの例です。
final var surrogate = "\uD83D\uDE0A"; // "😊"という1文字
System.out.println(surrogate); // "😊"

final var s = "a" + surrogate + "b";
System.out.println(s); // "a😊b"

System.out.println(s.indexOf("a", 0)); // 0
System.out.println(s.indexOf("a", 1)); // -1

System.out.println(s.indexOf(surrogate, 0)); // 1
System.out.println(s.indexOf(surrogate, 1)); // 1
System.out.println(s.indexOf(surrogate, 2)); // -1
System.out.println(s.indexOf(surrogate, 3)); // -1

System.out.println(s.indexOf("b", 0)); // 3
System.out.println(s.indexOf("b", 1)); // 3
System.out.println(s.indexOf("b", 2)); // 3
System.out.println(s.indexOf("b", 3)); // 3
System.out.println(s.indexOf("b", 4)); // -1

int indexOf (String str, int beginIndex, int endIndex)

指定されたthis文字列の索引範囲内で、指定された部分文字列の最初の出現のインデックスを返します。

関連 : indexOf(String str, int fromIndex)

final var s = "abcabc";

System.out.println(s.indexOf("bc", 0, 6)); // 1
System.out.println(s.indexOf("bc", 1, 6)); // 1
System.out.println(s.indexOf("bc", 2, 6)); // 4
System.out.println(s.indexOf("bc", 3, 6)); // 4
System.out.println(s.indexOf("bc", 4, 6)); // 4
System.out.println(s.indexOf("bc", 5, 6)); // -1
System.out.println(s.indexOf("bc", 6, 6)); // -1

System.out.println(s.indexOf("bc", 0, 0)); // -1
System.out.println(s.indexOf("bc", 0, 1)); // -1
System.out.println(s.indexOf("bc", 0, 2)); // -1
System.out.println(s.indexOf("bc", 0, 3)); // 1
System.out.println(s.indexOf("bc", 0, 4)); // 1
System.out.println(s.indexOf("bc", 0, 5)); // 1
System.out.println(s.indexOf("bc", 0, 6)); // 1

String intern ()

文字列オブジェクトの正準表現を返します。

final var s1 = new String("abc");
final var s2 = new String("abc");

System.out.println(s1 == s2); // false
System.out.println(s1.equals(s2)); // true

final var ret1 = s1.intern();
System.out.println(ret1); // "abc"

final var ret2 = s2.intern();
System.out.println(ret2); // "abc"

System.out.println(ret1 == ret2); // true

boolean isBlank ()

文字列が空かwhite spaceコード・ポイントのみが含まれる場合はtrueを戻し、それ以外の場合はfalseを返します。

System.out.println("".isBlank()); // true
System.out.println(" ".isBlank()); // true
System.out.println("     ".isBlank()); // true
System.out.println("\t".isBlank()); // true
System.out.println("\n".isBlank()); // true

System.out.println("abc".isBlank()); // false
System.out.println("a b c".isBlank()); // false

boolean isEmpty ()

length()が0の場合にのみ、trueを返します。

System.out.println("".isEmpty()); // true
System.out.println(" ".isEmpty()); // false
System.out.println("\n".isEmpty()); // false
System.out.println("\0".isEmpty()); // false
System.out.println("abc".isEmpty()); // false

static String join (CharSequence delimiter, CharSequence... elements)

指定されたdelimiterのコピーを使用して結合されたCharSequence要素のコピーからなる新しいStringを返します。

System.out.println(String.join("-", "Java", "is", "cool")); // "Java-is-cool"
System.out.println(String.join("->", "A", "B", "C")); // "A->B->C"

System.out.println(String.join("-")); // ""
System.out.println(String.join("-", "", "a", "", "b")); // "-a--b"

static String join (CharSequence delimiter, Iterable<? extends CharSequence> elements)

指定されたdelimiterのコピーを使用して結合されたCharSequence要素のコピーからなる新しいStringを返します。

System.out.println(String.join("-", List.of("Java", "is", "cool"))); // "Java-is-cool"
System.out.println(String.join("->", List.of("A", "B", "C"))); // "A->B->C"

System.out.println(String.join("-", List.of())); // ""
System.out.println(String.join("-", List.of("", "a", "", "b"))); // "-a--b"

int lastIndexOf (int ch)

この文字列内で、指定された文字が最後に出現する位置のインデックスを返します。

final var s = "abcXY";

System.out.println(s.lastIndexOf('a')); // 0
System.out.println(s.lastIndexOf('b')); // 1
System.out.println(s.lastIndexOf('c')); // 2
System.out.println(s.lastIndexOf('d')); // -1
System.out.println(s.lastIndexOf('X')); // 3
System.out.println(s.lastIndexOf('Y')); // 4
System.out.println(s.lastIndexOf('Z')); // -1
final var s = "abcabc";
System.out.println(s.lastIndexOf('a')); // 3
System.out.println(s.lastIndexOf('b')); // 4
System.out.println(s.lastIndexOf('c')); // 5
// サロゲート・コード・ポイントの例です。
final var surrogate = "\uD83D\uDE0A"; // "😊"という1文字
System.out.println(surrogate); // "😊"

final var s = "a" + surrogate + "b";
System.out.println(s); // "a😊b"

System.out.println(s.lastIndexOf('a')); // 0

// 0x1f60a = 😊
System.out.println(s.lastIndexOf(0x1f60a)); // 1

System.out.println(s.lastIndexOf('b')); // 3

int lastIndexOf (int ch, int fromIndex)

この文字列内で、指定された文字が最後に出現する位置のインデックスを返します(検索は指定されたインデックスから開始され、先頭方向に行われる)。

final var s = "abcabc";

System.out.println(s.lastIndexOf('a', 5)); // 3
System.out.println(s.lastIndexOf('a', 4)); // 3
System.out.println(s.lastIndexOf('a', 3)); // 3
System.out.println(s.lastIndexOf('a', 2)); // 0
System.out.println(s.lastIndexOf('a', 1)); // 0
System.out.println(s.lastIndexOf('a', 0)); // 0

System.out.println(s.lastIndexOf('b', 5)); // 4
System.out.println(s.lastIndexOf('b', 4)); // 4
System.out.println(s.lastIndexOf('b', 3)); // 1
System.out.println(s.lastIndexOf('b', 2)); // 1
System.out.println(s.lastIndexOf('b', 1)); // 1
System.out.println(s.lastIndexOf('b', 0)); // -1

System.out.println(s.lastIndexOf('c', 5)); // 5
System.out.println(s.lastIndexOf('c', 4)); // 2
System.out.println(s.lastIndexOf('c', 3)); // 2
System.out.println(s.lastIndexOf('c', 2)); // 2
System.out.println(s.lastIndexOf('c', 1)); // -1
System.out.println(s.lastIndexOf('c', 0)); // -1
// サロゲート・コード・ポイントの例です。
final var surrogate = "\uD83D\uDE0A"; // "😊"という1文字
System.out.println(surrogate); // "😊"

final var s = "a" + surrogate + "b";
System.out.println(s); // "a😊b"

System.out.println(s.lastIndexOf('a', 3)); // 0
System.out.println(s.lastIndexOf('a', 2)); // 0
System.out.println(s.lastIndexOf('a', 1)); // 0
System.out.println(s.lastIndexOf('a', 0)); // 0

// 0x1f60a = 😊
System.out.println(s.lastIndexOf(0x1f60a, 3)); // 1
System.out.println(s.lastIndexOf(0x1f60a, 2)); // 1
System.out.println(s.lastIndexOf(0x1f60a, 1)); // 1
System.out.println(s.lastIndexOf(0x1f60a, 0)); // -1

System.out.println(s.lastIndexOf('b', 4)); // 3
System.out.println(s.lastIndexOf('b', 3)); // 3
System.out.println(s.lastIndexOf('b', 2)); // -1
System.out.println(s.lastIndexOf('b', 1)); // -1
System.out.println(s.lastIndexOf('b', 0)); // -1

int lastIndexOf (String str)

この文字列内で、指定された部分文字列が最後に出現する位置のインデックスを返します。

final var s = "abcabc";

System.out.println(s.lastIndexOf("a")); // 3
System.out.println(s.lastIndexOf("ab")); // 3
System.out.println(s.lastIndexOf("abc")); // 3
System.out.println(s.lastIndexOf("bc")); // 4
System.out.println(s.lastIndexOf("c")); // 5
System.out.println(s.lastIndexOf("cab")); // 2

System.out.println(s.lastIndexOf("abcd")); // -1
System.out.println(s.lastIndexOf("ac")); // -1
System.out.println(s.lastIndexOf("z")); // -1
// サロゲート・コード・ポイントの例です。
final var surrogate = "\uD83D\uDE0A"; // "😊"という1文字
System.out.println(surrogate); // "😊"

final var s = "a" + surrogate + "b";
System.out.println(s); // "a😊b"

System.out.println(s.lastIndexOf("a")); // 0
System.out.println(s.lastIndexOf(surrogate)); // 1
System.out.println(s.lastIndexOf("b")); // 3

int lastIndexOf (String str, int fromIndex)

この文字列内で、指定された部分文字列が最後に出現する位置のインデックスを返します(検索は指定されたインデックスから開始され、先頭方向に行われる)。

final var s = "abcabc";

System.out.println(s.lastIndexOf("ab", 5)); // 3
System.out.println(s.lastIndexOf("ab", 4)); // 3
System.out.println(s.lastIndexOf("ab", 3)); // 3
System.out.println(s.lastIndexOf("ab", 2)); // 0
System.out.println(s.lastIndexOf("ab", 1)); // 0
System.out.println(s.lastIndexOf("ab", 0)); // 0

System.out.println(s.lastIndexOf("bc", 5)); // 4
System.out.println(s.lastIndexOf("bc", 4)); // 4
System.out.println(s.lastIndexOf("bc", 3)); // 1
System.out.println(s.lastIndexOf("bc", 2)); // 1
System.out.println(s.lastIndexOf("bc", 1)); // 1
System.out.println(s.lastIndexOf("bc", 0)); // -1

System.out.println(s.lastIndexOf("ca", 5)); // 2
System.out.println(s.lastIndexOf("ca", 4)); // 2
System.out.println(s.lastIndexOf("ca", 3)); // 2
System.out.println(s.lastIndexOf("ca", 2)); // 2
System.out.println(s.lastIndexOf("ca", 1)); // -1
System.out.println(s.lastIndexOf("ca", 0)); // -1
// サロゲート・コード・ポイントの例です。
final var surrogate = "\uD83D\uDE0A"; // "😊"という1文字
System.out.println(surrogate); // "😊"

final var s = "a" + surrogate + "b";
System.out.println(s); // "a😊b"

System.out.println(s.lastIndexOf("a", 3)); // 0
System.out.println(s.lastIndexOf("a", 2)); // 0
System.out.println(s.lastIndexOf("a", 1)); // 0
System.out.println(s.lastIndexOf("a", 0)); // 0

System.out.println(s.lastIndexOf(surrogate, 3)); // 1
System.out.println(s.lastIndexOf(surrogate, 2)); // 1
System.out.println(s.lastIndexOf(surrogate, 1)); // 1
System.out.println(s.lastIndexOf(surrogate, 0)); // -1

System.out.println(s.lastIndexOf("b", 3)); // 3
System.out.println(s.lastIndexOf("b", 2)); // -1
System.out.println(s.lastIndexOf("b", 1)); // -1
System.out.println(s.lastIndexOf("b", 0)); // -1

int length ()

この文字列の長さを戻します。

System.out.println("".length()); // 0
System.out.println("abc".length()); // 3
System.out.println("☆◇△▽".length()); // 4
// サロゲート・コード・ポイントの例です。
final var surrogate = "\uD83D\uDE0A"; // "😊"という1文字
System.out.println(surrogate); // "😊"

final var s = "a" + surrogate + "b";
System.out.println(s); // "a😊b"

System.out.println(s.length()); // 4
System.out.println(s.codePoints().count()); // 3

Stream<String> lines ()

この文字列から抽出された行のストリームを、行終了記号で区切って返します。

final var s = """
        Book
        Cake
        Stone
        """;
final var ret = s.lines();
System.out.println(ret.toList()); // [Book, Cake, Stone]
final var s = """

        Book

        Cake

        Stone

        """;
final var ret = s.lines();
System.out.println(ret.toList()); // [, Book, , Cake, , Stone, ]
final var ret = "".lines();
System.out.println(ret.toList()); // []

boolean matches (String regex)

この文字列が、指定された正規表現と一致するかどうかを判定します。

final var s = "java is cool";

System.out.println(s.matches("java")); // false
System.out.println(s.matches("java.*")); // true

System.out.println(s.matches(".*cool")); // true
final var s1 = "Book";
final var s2 = "Cake";
final var s3 = "Stone";

System.out.println(s1.matches("Book|Cake")); // true
System.out.println(s2.matches("Book|Cake")); // true
System.out.println(s3.matches("Book|Cake")); // false

int offsetByCodePoints (int index, int codePointOffset)

このString内で、指定されたindexからcodePointOffsetコード・ポイント分だけオフセットされた位置のインデックスを返します。

final var s = "abc";

//s.offsetByCodePoints(0, -1); // IndexOutOfBoundsException
System.out.println(s.offsetByCodePoints(0, 0)); // 0
System.out.println(s.offsetByCodePoints(0, 1)); // 1
System.out.println(s.offsetByCodePoints(0, 2)); // 2
System.out.println(s.offsetByCodePoints(0, 3)); // 3

System.out.println(s.offsetByCodePoints(1, 0)); // 1
System.out.println(s.offsetByCodePoints(1, 1)); // 2
System.out.println(s.offsetByCodePoints(1, 2)); // 3
// サロゲート・コード・ポイントの例です。
final var surrogate = "\uD83D\uDE0A"; // "😊"という1文字
System.out.println(surrogate); // "😊"

final var s = "a" + surrogate + "b";
System.out.println(s); // "a😊b"

System.out.println(s.offsetByCodePoints(0, 0)); // 0
System.out.println(s.offsetByCodePoints(0, 1)); // 1
System.out.println(s.offsetByCodePoints(0, 2)); // 3
System.out.println(s.offsetByCodePoints(0, 3)); // 4

boolean regionMatches (boolean ignoreCase, int toffset, String other, int ooffset, int len)

2つの文字列領域が等しいかどうかを判定します。

final var s = "abcde";

// ignoreCase = false
System.out.println(s.regionMatches(false, 0, "abcde", 0, 5)); // true
System.out.println(s.regionMatches(false, 0, "bcdef", 0, 5)); // false
System.out.println(s.regionMatches(false, 0, "ABCDE", 0, 5)); // false

System.out.println(s.regionMatches(false, 0, "bcd", 0, 3)); // false
System.out.println(s.regionMatches(false, 1, "bcd", 0, 3)); // true
System.out.println(s.regionMatches(false, 2, "bcd", 0, 3)); // false

System.out.println(s.regionMatches(false, 0, "012abcde345", 0, 11)); // false
System.out.println(s.regionMatches(false, 0, "012abcde345", 0, 5)); // false
System.out.println(s.regionMatches(false, 0, "012abcde345", 3, 5)); // true

// ignoreCase = true
System.out.println(s.regionMatches(true, 0, "abcde", 0, 5)); // true
System.out.println(s.regionMatches(true, 0, "bcdef", 0, 5)); // false
System.out.println(s.regionMatches(true, 0, "ABCDE", 0, 5)); // true

boolean regionMatches (int toffset, String other, int ooffset, int len)

2つの文字列領域が等しいかどうかを判定します。

final var s = "abcde";

System.out.println(s.regionMatches(0, "abcde", 0, 5)); // true
System.out.println(s.regionMatches(0, "bcdef", 0, 5)); // false
System.out.println(s.regionMatches(0, "ABCDE", 0, 5)); // false

System.out.println(s.regionMatches(0, "bcd", 0, 3)); // false
System.out.println(s.regionMatches(1, "bcd", 0, 3)); // true
System.out.println(s.regionMatches(2, "bcd", 0, 3)); // false

System.out.println(s.regionMatches(0, "012abcde345", 0, 11)); // false
System.out.println(s.regionMatches(0, "012abcde345", 0, 5)); // false
System.out.println(s.regionMatches(0, "012abcde345", 3, 5)); // true

String repeat (int count)

この文字列を連結した値がcount回繰り返される文字列を返します。

System.out.println("A".repeat(0)); // ""
System.out.println("A".repeat(1)); // "A"
System.out.println("A".repeat(2)); // "AA"
System.out.println("A".repeat(3)); // "AAA"

System.out.println("abc".repeat(0)); // ""
System.out.println("abc".repeat(1)); // "abc"
System.out.println("abc".repeat(2)); // "abcabc"

System.out.println("".repeat(0)); // ""
System.out.println("".repeat(1)); // ""

String replace (char oldChar, char newChar)

この文字列内にあるすべてのoldCharをnewCharに置換した結果生成される文字列を返します。

final var s = "abcd";

System.out.println(s.replace('a', 'X')); // "Xbcd"
System.out.println(s.replace('b', 'Y')); // "aYcd"
System.out.println(s.replace('c', 'Z')); // "abZd"
final var s = "aabbcc";

System.out.println(s.replace('a', 'X')); // "XXbbcc"
System.out.println(s.replace('b', 'Y')); // "aaYYcc"

String replace (CharSequence target, CharSequence replacement)

リテラル・ターゲット・シーケンスに一致するこの文字列の部分文字列を、指定されたリテラル置換シーケンスに置き換えます。

final var s = "abcd";

System.out.println(s.replace("a", "X")); // "Xbcd"
System.out.println(s.replace("abc", "XYZ")); // "XYZd"
System.out.println(s.replace("ab", "")); // "cd"
final var s = "abcabc";

System.out.println(s.replace("a", "X")); // "XbcXbc"
System.out.println(s.replace("bc", "YYZZ")); // "aYYZZaYYZZ"

String replaceAll (String regex, String replacement)

指定された正規表現に一致する、この文字列の各部分文字列に対し、指定された置換を実行します。

final var s = "javaAAABBB";

System.out.println(s.replaceAll("java.", "x")); // "xAABBB"
System.out.println(s.replaceAll("A.", "y")); // "javayyBB"
System.out.println(s.replaceAll(".", "z")); // "zzzzzzzzzz"

String replaceFirst (String regex, String replacement)

指定された正規表現に一致する、この文字列の最初の部分文字列に対し、指定された置換を実行します。

final var s = "javaAAABBB";

System.out.println(s.replaceFirst("java.", "x")); // "xAABBB"
System.out.println(s.replaceFirst("A.", "y")); // "javayABBB"
System.out.println(s.replaceFirst(".", "z")); // "zavaAAABBB"

String resolveConstantDesc (MethodHandles.Lookup lookup)

このインスタンスをConstantDescとして解決します。その結果がインスタンス自体です。

final var ret = "abcd".resolveConstantDesc(MethodHandles.lookup());
System.out.println(ret); // "abcd"

String[] split (String regex)

この文字列を、指定された正規表現に一致する位置で分割します。

final var s = "a-b-c";

System.out.println(Arrays.toString(s.split("-"))); // [a, b, c]
System.out.println(Arrays.toString(s.split("b"))); // [a-, -c]
System.out.println(Arrays.toString(s.split("X"))); // [a-b-c]
final var s = "boo:and:foo";

System.out.println(Arrays.toString(s.split(":"))); // [boo, and, foo]
System.out.println(Arrays.toString(s.split("o"))); // [b, , :and:f]
final var s = "a-b>c";

System.out.println(Arrays.toString(s.split("-"))); // [a, b>c]
System.out.println(Arrays.toString(s.split(">"))); // [a-b, c]
System.out.println(Arrays.toString(s.split("[->]"))); // [a, b, c]

String[] split (String regex, int limit)

この文字列を、指定された正規表現に一致する位置で分割します。

final var s = "a-b-c";

System.out.println(Arrays.toString(s.split("-", 0))); // [a, b, c]
System.out.println(Arrays.toString(s.split("-", 1))); // [a-b-c]
System.out.println(Arrays.toString(s.split("-", 2))); // [a, b-c]
System.out.println(Arrays.toString(s.split("-", 3))); // [a, b, c]
final var s = "boo:and:foo";

System.out.println(Arrays.toString(s.split(":", 2))); // [boo, and:foo]
System.out.println(Arrays.toString(s.split(":", 5))); // [boo, and, foo]
System.out.println(Arrays.toString(s.split(":", -2))); // [boo, and, foo]
System.out.println(Arrays.toString(s.split("o", 5))); // [b, , :and:f, , ]
System.out.println(Arrays.toString(s.split("o", -2))); // [b, , :and:f, , ]
System.out.println(Arrays.toString(s.split("o", 0))); // [b, , :and:f]
final var s = "a-b>c";

System.out.println(Arrays.toString(s.split("-", 1))); // [a-b>c]
System.out.println(Arrays.toString(s.split("-", 2))); // [a, b>c]
System.out.println(Arrays.toString(s.split("-", 3))); // [a, b>c]

System.out.println(Arrays.toString(s.split(">", 1))); // [a-b>c]
System.out.println(Arrays.toString(s.split(">", 2))); // [a-b, c]
System.out.println(Arrays.toString(s.split(">", 3))); // [a-b, c]

System.out.println(Arrays.toString(s.split("[->]", 1))); // [a-b>c]
System.out.println(Arrays.toString(s.split("[->]", 2))); // [a, b>c]
System.out.println(Arrays.toString(s.split("[->]", 3))); // [a, b, c]

String[] splitWithDelimiters (String regex, int limit)

指定された正規表現の一致を囲むこの文字列を分割し、文字列と一致する区切り文字の両方を返します。

final var s = "a-b-c";

final var ret1 = s.splitWithDelimiters("-", 0);
System.out.println(Arrays.toString(ret1)); // [a, -, b, -, c]

final var ret2 = s.splitWithDelimiters("-", 1);
System.out.println(Arrays.toString(ret2)); // [a-b-c]

final var ret3 = s.splitWithDelimiters("-", 2);
System.out.println(Arrays.toString(ret3)); // [a, -, b-c]

final var ret4 = s.splitWithDelimiters("-", 3);
System.out.println(Arrays.toString(ret4)); // [a, -, b, -, c]
final var s = "boo:and:foo";

final var ret1 = s.splitWithDelimiters(":", 2);
System.out.println(Arrays.toString(ret1)); // [boo, :, and:foo]

final var ret2 = s.splitWithDelimiters(":", 5);
System.out.println(Arrays.toString(ret2)); // [boo, :, and, :, foo]

final var ret3 = s.splitWithDelimiters(":", -2);
System.out.println(Arrays.toString(ret3)); // [boo, :, and, :, foo]

final var ret4 = s.splitWithDelimiters("o", 5);
System.out.println(Arrays.toString(ret4)); // [b, o, , o, :and:f, o, , o, ]

final var ret5 = s.splitWithDelimiters("o", -2);
System.out.println(Arrays.toString(ret5)); // [b, o, , o, :and:f, o, , o, ]

final var ret6 = s.splitWithDelimiters("o", 0);
System.out.println(Arrays.toString(ret6)); // [b, o, , o, :and:f, o, , o]
final var s = "a-b>c";

final var ret1 = s.splitWithDelimiters("-", 1);
System.out.println(Arrays.toString(ret1)); // [a-b>c]

final var ret2 = s.splitWithDelimiters("-", 2);
System.out.println(Arrays.toString(ret2)); // [a, -, b>c]

final var ret3 = s.splitWithDelimiters("-", 3);
System.out.println(Arrays.toString(ret3)); // [a, -, b>c]

final var ret4 = s.splitWithDelimiters(">", 1);
System.out.println(Arrays.toString(ret4)); // [a-b>c]

final var ret5 = s.splitWithDelimiters(">", 2);
System.out.println(Arrays.toString(ret5)); // [a-b, >, c]

final var ret6 = s.splitWithDelimiters(">", 3);
System.out.println(Arrays.toString(ret6)); // [a-b, >, c]

final var ret7 = s.splitWithDelimiters("[->]", 1);
System.out.println(Arrays.toString(ret7)); // [a-b>c]

final var ret8 = s.splitWithDelimiters("[->]", 2);
System.out.println(Arrays.toString(ret8)); // [a, -, b>c]

final var ret9 = s.splitWithDelimiters("[->]", 3);
System.out.println(Arrays.toString(ret9)); // [a, -, b, >, c]

boolean startsWith (String prefix)

この文字列が、指定された接頭辞で始まるかどうかを判定します。

final var s = "abc";

System.out.println(s.startsWith("a")); // true
System.out.println(s.startsWith("ab")); // true
System.out.println(s.startsWith("abc")); // true
System.out.println(s.startsWith("abcd")); // false
System.out.println(s.startsWith("b")); // false
System.out.println(s.startsWith("c")); // false

boolean startsWith (String prefix, int toffset)

この文字列の指定されたインデックス以降の部分文字列が、指定された接頭辞で始まるかどうかを判定します。

final var s = "abc";

System.out.println(s.startsWith("a", 0)); // true
System.out.println(s.startsWith("a", 1)); // false
System.out.println(s.startsWith("a", 2)); // false

System.out.println(s.startsWith("ab", 0)); // true
System.out.println(s.startsWith("ab", 1)); // false
System.out.println(s.startsWith("ab", 2)); // false

System.out.println(s.startsWith("abc", 0)); // true
System.out.println(s.startsWith("abc", 1)); // false
System.out.println(s.startsWith("abc", 2)); // false

System.out.println(s.startsWith("b", 0)); // false
System.out.println(s.startsWith("b", 1)); // true
System.out.println(s.startsWith("b", 2)); // false

System.out.println(s.startsWith("bc", 0)); // false
System.out.println(s.startsWith("bc", 1)); // true
System.out.println(s.startsWith("bc", 2)); // false

System.out.println(s.startsWith("c", 0)); // false
System.out.println(s.startsWith("c", 1)); // false
System.out.println(s.startsWith("c", 2)); // true

String strip ()

値がこの文字列であり、先頭と末尾のすべてのwhite spaceが削除されている文字列を返します。

関連 : trim()

final var s = " abcd ";
System.out.println(s); // " abcd "
System.out.println(s.length()); // 6

final var ret = s.strip();
System.out.println(ret); // "abcd"
System.out.println(ret.length()); // 4
// u3000 = IDEOGRAPHIC SPACE
final var s = "\u3000☆◇△\u3000";
System.out.println(s); // " ☆◇△ "
System.out.println(s.length()); // 5

final var ret = s.strip();
System.out.println(ret); // "☆◇△"
System.out.println(ret.length()); // 3
final var s = " \t\nABC \t\n";

// ※見やすさのために、空白は*、タブは\t、改行は\nとして出力します。
final Function<String, String> func = (v) -> v.replace(" ", "*")
        .replace("\t", "\\t")
        .replace("\n", "\\n");

// "*\t\nABC*\t\n"
System.out.println(func.apply(s));

final var ret = s.strip();

// "ABC"
System.out.println(func.apply(ret));
final var s = """
          <html>
            <body>
              <p>Hello</p>
            </body>
          </html>  \
        """;

// ※見やすさのために、空白は*として出力します。
final Function<String, String> func = (v) -> v.replace(" ", "*");

// """
// **<html>
// ****<body>
// ******<p>Hello</p>
// ****</body>
// **</html>**
// """
System.out.println(func.apply(s));

final var ret = s.strip();

// """
// <html>
// ****<body>
// ******<p>Hello</p>
// ****</body>
// **</html>
// """
System.out.println(func.apply(ret));

String stripIndent ()

偶然のwhite spaceをあらゆる行の最初と最後から削除して、値がこの文字列である文字列を返します。

final var s = " abcd ";
System.out.println(s); // " abcd "
System.out.println(s.length()); // 6

final var ret = s.stripIndent();
System.out.println(ret); // "abcd"
System.out.println(ret.length()); // 4
final var s = " \t\nABC \t\n";

// ※見やすさのために、空白は*、タブは\t、改行は\nとして出力します。
final Function<String, String> func = (v) -> v.replace(" ", "*")
        .replace("\t", "\\t")
        .replace("\n", "\\n");

// "*\t\nABC*\t\n"
System.out.println(func.apply(s));

final var ret = s.stripIndent();

// "\nABC\n"
System.out.println(func.apply(ret));
final var s = """
          <html>
            <body>
              <p>Hello</p>
            </body>
          </html>  \
        """;

// ※見やすさのために、空白は*として出力します。
final Function<String, String> func = (v) -> v.replace(" ", "*");

// """
// **<html>
// ****<body>
// ******<p>Hello</p>
// ****</body>
// **</html>**
// """
System.out.println(func.apply(s));

final var ret = s.stripIndent();

// """
// <html>
// **<body>
// ****<p>Hello</p>
// **</body>
// </html>
// """
System.out.println(func.apply(ret));

String stripLeading ()

すべての先行white spaceが削除されて、値がこの文字列である文字列を返します。

final var s = " abcd ";
System.out.println(s); // " abcd "
System.out.println(s.length()); // 6

final var ret = s.stripLeading();
System.out.println(ret); // "abcd "
System.out.println(ret.length()); // 5
final var s = " \t\nABC \t\n";

// ※見やすさのために、空白は*、タブは\t、改行は\nとして出力します。
final Function<String, String> func = (v) -> v.replace(" ", "*")
        .replace("\t", "\\t")
        .replace("\n", "\\n");

// "*\t\nABC*\t\n"
System.out.println(func.apply(s));

final var ret = s.stripLeading();

// "ABC*\t\n"
System.out.println(func.apply(ret));
final var s = """
          <html>
            <body>
              <p>Hello</p>
            </body>
          </html>  \
        """;

// ※見やすさのために、空白は*として出力します。
final Function<String, String> func = (v) -> v.replace(" ", "*");

// """
// **<html>
// ****<body>
// ******<p>Hello</p>
// ****</body>
// **</html>**
// """
System.out.println(func.apply(s));

final var ret = s.stripLeading();

// """
// <html>
// ****<body>
// ******<p>Hello</p>
// ****</body>
// **</html>**
// """
System.out.println(func.apply(ret));

String stripTrailing ()

値がこの文字列で、すべての後続white spaceが削除されている文字列を返します。

final var s = " abcd ";
System.out.println(s); // " abcd "
System.out.println(s.length()); // 6

final var ret = s.stripTrailing();
System.out.println(ret); // " abcd"
System.out.println(ret.length()); // 5
final var s = " \t\nABC \t\n";

// ※見やすさのために、空白は*、タブは\t、改行は\nとして出力します。
final Function<String, String> func = (v) -> v.replace(" ", "*")
        .replace("\t", "\\t")
        .replace("\n", "\\n");

// "*\t\nABC*\t\n"
System.out.println(func.apply(s));

final var ret = s.stripTrailing();

// "*\t\nABC"
System.out.println(func.apply(ret));
final var s = """
          <html>
            <body>
              <p>Hello</p>
            </body>
          </html>  \
        """;

// ※見やすさのために、空白は*として出力します。
final Function<String, String> func = (v) -> v.replace(" ", "*");

// """
// **<html>
// ****<body>
// ******<p>Hello</p>
// ****</body>
// **</html>**
// """
System.out.println(func.apply(s));

final var ret = s.stripTrailing();

// """
// **<html>
// ****<body>
// ******<p>Hello</p>
// ****</body>
// **</html>
// """
System.out.println(func.apply(ret));

CharSequence subSequence (int beginIndex, int endIndex)

このシーケンスのサブシーケンスである文字シーケンスを返します。

final var s = "abcd";

System.out.println(s.subSequence(0, 0)); // ""
System.out.println(s.subSequence(0, 1)); // "a"
System.out.println(s.subSequence(0, 2)); // "ab"
System.out.println(s.subSequence(0, 3)); // "abc"
System.out.println(s.subSequence(0, 4)); // "abcd"
//s.subSequence(0, 5); // IndexOutOfBoundsException

System.out.println(s.subSequence(1, 2)); // "b"
System.out.println(s.subSequence(2, 4)); // "cd"

String substring (int beginIndex)

この文字列の部分文字列である文字列を返します。

final var s = "abcd";

System.out.println(s.substring(0)); // "abcd"
System.out.println(s.substring(1)); // "bcd"
System.out.println(s.substring(2)); // "cd"
System.out.println(s.substring(3)); // "d"
System.out.println(s.substring(4)); // ""
//s.substring(5); // IndexOutOfBoundsException

String substring (int beginIndex, int endIndex)

この文字列の部分文字列である文字列を返します。

final var s = "abcd";

System.out.println(s.substring(0, 0)); // ""
System.out.println(s.substring(0, 1)); // "a"
System.out.println(s.substring(0, 2)); // "ab"
System.out.println(s.substring(0, 3)); // "abc"
System.out.println(s.substring(0, 4)); // "abcd"
//s.substring(0, 5); // IndexOutOfBoundsException

System.out.println(s.substring(1, 2)); // "b"
System.out.println(s.substring(2, 4)); // "cd"

char[] toCharArray ()

この文字列を新しい文字配列に変換します。

final var ret1 = "".toCharArray();
System.out.println(Arrays.toString(ret1)); // []

final var ret2 = "abcd".toCharArray();
System.out.println(Arrays.toString(ret2)); // [a, b, c, d]

final var ret3 = "☆◇△".toCharArray();
System.out.println(Arrays.toString(ret3)); // [☆, ◇, △]

String toLowerCase ()

デフォルト・ロケールのルールを使って、このString内のすべての文字を小文字に変換します。

// ※ 環境によって違う場合があります。
System.out.println(Locale.getDefault().toLanguageTag()); // ja-JP

System.out.println("".toLowerCase()); // ""
System.out.println("abcdef".toLowerCase()); // "abcdef"
System.out.println("ABCDEF".toLowerCase()); // "abcdef"
System.out.println("あいうえお".toLowerCase()); // "あいうえお"
System.out.println("ΙΧΘΥΣ".toLowerCase()); // "ιχθυς"

String toLowerCase (Locale locale)

指定されたLocaleのルールを使って、このString内のすべての文字を小文字に変換します。

final var s1 = "I"; // u0049
final var s2 = "İ"; // u0130

{
    final var en = Locale.ENGLISH;

    final var ret1 = s1.toLowerCase(en);
    System.out.println(ret1); // "i"

    final var list1 = ret1.codePoints().mapToObj(Integer::toHexString).toList();
    System.out.println(list1); // [69]

    final var ret2 = s2.toLowerCase(en);
    System.out.println(ret2); // "i̇ "

    final var list2 = ret2.codePoints().mapToObj(Integer::toHexString).toList();
    System.out.println(list2); // [69, 307]
}

{
    final var tr = Locale.of("tr");

    final var ret1 = s1.toLowerCase(tr);
    System.out.println(ret1); // "ı"

    final var list1 = ret1.codePoints().mapToObj(Integer::toHexString).toList();
    System.out.println(list1); // [131]

    final var ret2 = s2.toLowerCase(tr);
    System.out.println(ret2); // "i"

    final var list2 = ret2.codePoints().mapToObj(Integer::toHexString).toList();
    System.out.println(list2); // [69]
}

String toString ()

このオブジェクト(これはすでに文字列です!)

final var ret1 = "abcd".toString();
System.out.println(ret1); // "abcd"

final var ret2 = "☆◇△".toString();
System.out.println(ret2); // "☆◇△"

String toUpperCase ()

デフォルト・ロケールのルールを使って、このString内のすべての文字を大文字に変換します。

// ※ 環境によって違う場合があります。
System.out.println(Locale.getDefault().toLanguageTag()); // ja-JP

System.out.println("".toUpperCase()); // ""
System.out.println("abcdef".toUpperCase()); // "ABCDEF"
System.out.println("ABCDEF".toUpperCase()); // "ABCDEF"
System.out.println("あいうえお".toUpperCase()); // "あいうえお"
System.out.println("ιχθυς".toUpperCase()); // "ΙΧΘΥΣ"

String toUpperCase (Locale locale)

指定されたLocaleのルールを使って、このString内のすべての文字を大文字に変換します。

final var s1 = "i"; // u0069
final var s2 = "ı"; // u0130

{
    final var en = Locale.ENGLISH;

    final var ret1 = s1.toUpperCase(en);
    System.out.println(ret1); // "I"

    final var list1 = ret1.codePoints().mapToObj(Integer::toHexString).toList();
    System.out.println(list1); // [49]

    final var ret2 = s2.toUpperCase(en);
    System.out.println(ret2); // "I"

    final var list2 = ret2.codePoints().mapToObj(Integer::toHexString).toList();
    System.out.println(list2); // [49]
}

{
    final var tr = Locale.of("tr");

    final var ret1 = s1.toUpperCase(tr);
    System.out.println(ret1); // "İ"

    final var list1 = ret1.codePoints().mapToObj(Integer::toHexString).toList();
    System.out.println(list1); // [130]

    final var ret2 = s2.toUpperCase(tr);
    System.out.println(ret2); // "I"

    final var list2 = ret2.codePoints().mapToObj(Integer::toHexString).toList();
    System.out.println(list2); // [49]
}

<R> R transform (Function<? super String,? extends R> f)

このメソッドは、関数をthis文字列に適用します。

final var s = "1234";

final var ret = s.transform(v -> Integer.parseInt(v) * 2);
System.out.println(ret); // 2468
final var s = "a";

final var ret = s.transform(v -> v.repeat(5).toUpperCase());
System.out.println(ret); // "AAAAA"

String translateEscapes ()

文字列リテラルのように変換されたエスケープ・シーケンスを使用して、値がこの文字列の文字列を返します。

final var s = "aaaa\\nBBBB";

System.out.println(s); // "aaaa\nBBBB"

// """
// aaaa
// BBBB
// """
System.out.println(s.translateEscapes());

String trim ()

値がこの文字列で、先頭と末尾のすべてのスペースが削除され、コード・ポイントが'U+0020' (空白文字)以下の文字でスペースが定義されている文字列を返します。

関連 : strip()

final var s = " abcd ";
System.out.println(s); // " abcd "
System.out.println(s.length()); // 6

final var ret = s.trim();
System.out.println(ret); // "abcd"
System.out.println(ret.length()); // 4
// u3000 = IDEOGRAPHIC SPACE
final var s = "\u3000☆◇△\u3000";
System.out.println(s); // " ☆◇△ "
System.out.println(s.length()); // 5

final var ret = s.trim();
System.out.println(ret); // " ☆◇△ "
System.out.println(ret.length()); // 5
final var s = " \t\nABC \t\n";

// ※見やすさのために、空白は*、タブは\t、改行は\nとして出力します。
final Function<String, String> func = (v) -> v.replace(" ", "*")
        .replace("\t", "\\t")
        .replace("\n", "\\n");

// "*\t\nABC*\t\n"
System.out.println(func.apply(s));

final var ret = s.trim();

// "ABC"
System.out.println(ret);
final var s = """
          <html>
            <body>
              <p>Hello</p>
            </body>
          </html>  \
        """;

// ※見やすさのために、空白は*として出力します。
final Function<String, String> func = (v) -> v.replace(" ", "*");

// """
// **<html>
// ****<body>
// ******<p>Hello</p>
// ****</body>
// **</html>**
// """
System.out.println(func.apply(s));

final var ret = s.trim();

// """
// <html>
// ****<body>
// ******<p>Hello</p>
// ****</body>
// **</html>
// """
System.out.println(func.apply(ret));

static String valueOf (boolean b)

boolean引数の文字列表現を返します。

final var ret1 = String.valueOf(true);
System.out.println(ret1); // "true"

final var ret2 = String.valueOf(false);
System.out.println(ret2); // "false"

static String valueOf (char c)

char引数の文字列表現を返します。

final var ret1 = String.valueOf('a');
System.out.println(ret1); // "a"

final var ret2 = String.valueOf('△');
System.out.println(ret2); // "△"

static String valueOf (char[] data)

char配列引数の文字列表現を返します。

final char[] data = {'b', 'o', 'o', 'k'};

final var ret = String.valueOf(data);
System.out.println(ret); // "book"
final char[] data = {'☆', '◇', '△'};

final var ret = String.valueOf(data);
System.out.println(ret); // "☆◇△"

static String valueOf (char[] data, int offset, int count)

char配列引数の特定の部分配列の文字列表現を返します。

final char[] data = {'b', 'o', 'o', 'k'};

System.out.println(String.valueOf(data, 0, 1)); // "b"
System.out.println(String.valueOf(data, 0, 2)); // "bo"
System.out.println(String.valueOf(data, 0, 3)); // "boo"
System.out.println(String.valueOf(data, 0, 4)); // "book"

System.out.println(String.valueOf(data, 1, 3)); // "ook"
System.out.println(String.valueOf(data, 2, 2)); // "ok"
System.out.println(String.valueOf(data, 3, 1)); // "k"

static String valueOf (double d)

double引数の文字列表現を返します。

final double d1 = 1.0;
final double d2 = 0.12345;
final double d3 = 1.23e10;

final var ret1 = String.valueOf(d1);
System.out.println(ret1); // "1.0"

final var ret2 = String.valueOf(d2);
System.out.println(ret2); // "0.12345"

final var ret3 = String.valueOf(d3);
System.out.println(ret3); // "1.23E10"

static String valueOf (float f)

float引数の文字列表現を返します。

final float f1 = 1.0f;
final float f2 = 0.12345f;
final float f3 = 1.23e10f;

final var ret1 = String.valueOf(f1);
System.out.println(ret1); // "1.0"

final var ret2 = String.valueOf(f2);
System.out.println(ret2); // "0.12345"

final var ret3 = String.valueOf(f3);
System.out.println(ret3); // "1.23E10"

static String valueOf (int i)

int引数の文字列表現を返します。

final int i1 = 0;
final int i2 = 1234;
final int i3 = -5678;

final var ret1 = String.valueOf(i1);
System.out.println(ret1); // "0"

final var ret2 = String.valueOf(i2);
System.out.println(ret2); // "1234"

final var ret3 = String.valueOf(i3);
System.out.println(ret3); // "-5678"

static String valueOf (long l)

long引数の文字列表現を返します。

final long l1 = 0L;
final long l2 = 1234567890123456789L;
final long l3 = -5678901234L;

final var ret1 = String.valueOf(l1);
System.out.println(ret1); // "0"

final var ret2 = String.valueOf(l2);
System.out.println(ret2); // "1234567890123456789"

final var ret3 = String.valueOf(l3);
System.out.println(ret3); // "-5678901234"

static String valueOf (Object obj)

Object引数の文字列表現を返します。

final var obj = LocalTime.of(14, 30, 59);

final var ret = String.valueOf(obj);
System.out.println(ret); // "14:30:59"
final var obj = URI.create("https://example.com/");

final var ret = String.valueOf(obj);
System.out.println(ret); // "https://example.com/"

関連記事

ページの先頭へ