LoginSignup
2
1

More than 3 years have passed since last update.

StringBuilderメモ

Last updated at Posted at 2020-05-25

可変な文字列である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
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1