可変な文字列であるStringBuilder。文字列を高速に連結するのに使うらしいです。
今回もStringBuilderのメソッドを使用して、使い方を学んでいきます。
append
appendを使って文字列の追加処理が可能です。
boolean型、char型、String型、配列などいろんな型を文字列として追加することができます。
StringBuilder sb = new StringBuilder("おはよう");
//boolean
boolean bool = true;
System.out.println(sb.append(bool));
//char
char c = 'A';
System.out.println(sb.append(c));
StringBuilder sbr = new StringBuilder("Aさん");
//配列
String[] str = {"こんにちは","おやすみ"};
System.out.println(sbr.append(str[0]));
System.out.println(sbr.append(str[1]));
StringBuilder s = new StringBuilder("Aさん");
//int,double,float,long
int i = 100;
double d = 100;
float f = 100;
long l = 100;
System.out.println(s.append(i));
System.out.println(s.append(d));
System.out.println(s.append(f));
System.out.println(s.append(l));
//boolean
おはようtrue
//char
おはようtrueA
//配列
Aさんこんにちは
Aさんこんにちはおやすみ
//int
Aさん100
//double
Aさん100100.0
//float
Aさん100100.0100.0
//long
Aさん100100.0100.0100
charAt(int index)
このシーケンス内の指定されたインデックスのchar値を返します。
StringBuilder sb = new StringBuilder("ABCDs");
System.out.println(sb.charAt(0));
System.out.println(sb.charAt(2));
System.out.println(sb.charAt(4));
A
C
s
delete(int start, int end)
このシーケンスの部分文字列内の文字を削除します。
start - 開始インデックス(この値を含む)。
end - 終了インデックス(この値を含まない)。
StringBuilder sb = new StringBuilder("ABCDs");
sb.delete(1, 3);
System.out.println(sb);
ADs
deleteCharAt(int index)
このシーケンス内の指定された位置にあるcharを削除します。
StringBuilder sb = new StringBuilder("ABCDs");
sb.deleteCharAt(2);
System.out.println(sb.toString());
ABDs
indexOf(String str)
この文字列内で、指定された部分文字列が最初に出現する位置のインデックスを返します。
StringBuilder sb = new StringBuilder("ABCDs");
System.out.println(sb.indexOf("C"));
System.out.println(sb.indexOf("s"));
2
4
indexOf(String str, int fromIndex)
指定されたインデックス以降で、指定された部分文字列がこの文字列内で最初に出現する位置のインデックスを返します。
StringBuilder sb = new StringBuilder("ABCDsD");
System.out.println(sb.indexOf("D",2));
System.out.println(sb.indexOf("s",0));
3
4
lastIndexOf(String str)
この文字列内で、指定された部分文字列が一番右に出現する位置のインデックスを返します。
StringBuilder sb = new StringBuilder("ABCDssD");
System.out.println(sb.lastIndexOf("D"));
System.out.println(sb.lastIndexOf("s"));
6
5
length()
長さ(文字数)を返します。
StringBuilder sb = new StringBuilder("ABCDssD");
System.out.println(sb.length());
7
replace(int start, int end, String str)
このシーケンスの部分文字列内の文字を、指定されたString内の文字で置き換えます。
StringBuilder sb = new StringBuilder("ABCDssD");
System.out.println(sb.replace(2, 5, "r"));
ABrsD
reverse()
この文字シーケンスを、シーケンスの順序を逆にしたもので置き換えます。
StringBuilder sb = new StringBuilder("ABCDssD");
System.out.println(sb.reverse());
DssDCBA
setCharAt(int index, char ch)
指定されたインデックスの文字がchに設定されます。
StringBuilder sb = new StringBuilder("ABCDssD");
sb.setCharAt(1, 's');
System.out.println(sb.toString());
AsCDssD
setLength(int newLength)
文字シーケンスの長さを設定します。
StringBuilder sb = new StringBuilder("ABCDssD");
System.out.println(sb.length());
sb.setLength(20);
System.out.println(sb.length());
7
20
subSequence(int start, int end)
このシーケンスのサブシーケンスである新規文字シーケンスを返します。
start - 開始インデックス(この値を含む)。
end - 終了インデックス(この値を含まない)。
StringBuilder sb = new StringBuilder("ABCDssD");
System.out.println(sb.subSequence(0, 2));
System.out.println(sb.subSequence(4, 5));
AB
s
substring(int start), substring(int start, int end)
この文字シーケンスに現在含まれている文字の部分シーケンスを含む新しいStringを返します。
StringBuilder sb = new StringBuilder("ABCDssD");
System.out.println(sb.substring(2));
System.out.println(sb.substring(5));
System.out.println(sb.substring(5,6));
System.out.println(sb.substring(0,2));
CDssD
sD
s
AB
insert
指定インデックスに指定した値を挿入する
StringBuilder sb = new StringBuilder("ABCDssD");
//0番目に'P'を挿入する
sb.insert(0, 'P');
System.out.println(sb.toString());
//8番目に23を挿入する
sb.insert(8, 23);
System.out.println(sb.toString());
int[] i = {10,20,30,40};
//0番目にi配列のインデックス2を挿入する
sb.insert(0, i[2]);
System.out.println(sb.toString());
PABCDssD
PABCDssD23
30PABCDssD23
capacity()
現在の容量を返します。
StringBuilder s = new StringBuilder();
//初期容量が16文字
System.out.println(s.capacity());
//初期容量16 + 追加14文字で現在の容量が30文字
StringBuilder sb = new StringBuilder("ABCDssDAAAAAAA");
System.out.println(sb.capacity());
16
30
trimToSize()
この文字シーケンスで使用されているストレージの低減を試みます。
StringBuilder sb = new StringBuilder("A");
//初期容量16 + 追加1文字で現在の容量が17文字
System.out.println(sb.capacity());
//初期容量分の16文字が削除され、1文字
sb.trimToSize();
System.out.println(sb.capacity());
StringBuilder s = new StringBuilder("AAAAAAAAAA");
//初期容量16 + 追加10文字で現在の容量が26文字
System.out.println(s.capacity());
//初期容量分の16文字が削除され、10文字
s.trimToSize();
System.out.println(s.capacity());
17
1
26
10