StringクラスとStringBuilderクラス

【文字列の考え方】

■位置と範囲 "abcde"

・位置の場合、aが0

・範囲の場合、aの前が0

■StringとStringBuilder

String(java.lang.String)

immutable(不変)オブジェクト

:一度セットしたフィールドの値を二度と変更できない。

StringBuilder(java.lang.StringBuilder)

mutable(可変)オブジェクト

:何度でもフィールドセットできる。

 
インスタンス生成方法】

■String(java.lang.String)

String str = new String("こんにちは");

String str = "こんにちは";

String str = String.valueOf("こんにちは");

■StringBuilder(java.lang.StringBuilder)

StringBuilder sb = new StringBuilder("abcde");

StringBuilder sb = new StringBuilder();

sb.append("abcde");


【Stringクラスのメソッド】

Java API リファレンス

https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html

※クラス定義とエントリーポイント省略

 

(1)replaceメソッド

対象の文字列を置換後の文字列に変換する。

--------------------

String str = "abcde";String result = str.replace("abcde","12345");System.out.println(result);

--------------------

実行結果12345


(2)replaceAllメソッド

対象の正規表現文字列を置換後の文字列に変換する。

正規表現を使用しない場合

--------------------

String str = "abcde";

String result = str.replaceAll("abcde","12345");

System.out.println(result);

--------------------

実行結果12345
正規表現を使用した場合

--------------------

String str = "abcde";

String result = str.replaceAll("[a-z]","1");

System.out.println(result);

--------------------

実行結果11111


(3)charAtメソッド【位置】

引数で指定した位置の文字を戻す。
➀範囲内の場合

--------------------

String str = "abcde";

System.out.println(str.charAt(0));

--------------------

実行結果a
②範囲外の場合

--------------------

String str = "abcde";

System.out.println(str.charAt(5));

--------------------

実行結果

java.jang.StringIndexOutOfBoundsException


(4)indexOfメソッド【位置】

引数で指定した文字または文字列の開始文字位置を返す。

オーバーロードされているので、引数にStringも指定できる。
➀引数に文字(char)を指定した場合

--------------------

String str = "abcde";

System.out.println(str.indexOf(c));

--------------------

実行結果

2
②引数に文字列(String)を指定した場合

--------------------

String str = "abcde";

System.out.println(str.indexOf(bc));

--------------------

実行結果

1
③引数に存在しない文字(文字列)を指定した場合

--------------------

String str = "abcde";

System.out.println(str.indexOf(abcdef));

--------------------

実行結果

-1


(5)substringメソッド【範囲】

文字列から、指定した範囲の文字列を抽出する。

--------------------

String str = "abcde";

System.out.println(str.substring(2,4));

--------------------

実行結果

cd


(6)trimメソッド文字列の前後にある空白を除去する。

代表的な空白とは…

スペース(\s)

タブ文字(\t)

改行(\n)(\r)

--------------------

String str = " a b cde \t";

System.out.println(trim(str));

--------------------

実行結果

a b cde


(7)lengthメソッド【範囲】

文字列の文字数を戻す。

--------------------

String str = "abcde";

System.out.println(charAt(str.length()));

--------------------

実行結果

java.lang.StringIndexOutOfBoundsException


(8)startsWithメソッド

文字列が引数で指定された文字で始まる場合、trueを返す。

--------------------

String str = "abcde";

System.out.println(str.startsWith("a"));

--------------------

実行結果true


(9)endsWithメソッド

文字列が引数で指定された文字で終わる場合、trueを返す。

--------------------

String str = "abcde";

System.out.println(str.endsWith("d"));

--------------------

実行結果

false


(10)splitメソッド

文字列を指定した正規表現に一致する位置で分割する。

--------------------

String str = "abcde";

System.out.println(str.endsWith("d"));

--------------------

実行結果

false


(11)concataメソッド

文字列と引数で渡された文字列を連結する。

--------------------

String str = "abcde";

System.out.println(str.concata("fghij"));

--------------------

実行結果

abcdefghij

 

【StringBuilderクラスのメソッド】

Java API リファレンス

https://docs.oracle.com/javase/jp/7/api/java/lang/StringBuilder.html

※クラス定義とエントリーポイント省略

(0)capacityメソッド
現在の容量を返却する。(capacity+16)
--------------------
StringBuilder sb = new StringBuilder("abcde");
System.out.println(sb.capacity());
--------------------
実行結果
21

(1)appendメソッド
文字列に新しい文字列を追加する。
--------------------
StringBuilder sb = new StringBuilder();
sb.append(true);
sb.append(1);
sb.append('a');
sb.append("bcde",1,3);
char[] array = {'a', 'b', 'c', 'd', 'e',};
sb.append(array);

System.out.println(sb.toString());
--------------------
実行結果
true1acdabcde

(2)insertメソッド【範囲】
文字列を任意の場所に挿入する。
--------------------
StringBuilder sb = new StringBuilder("abc");
//メソッドチェイン
sb.append("de").insert(2,"f");
System.out.println(sb);
--------------------
実行結果
abfcde

(3)deleteメソッド【範囲】
引数で指定した範囲の文字列を削除する。
--------------------
StringBuilder sb = new StringBuilder("abcde");
sb.delete(1,2);
System.out.println(sb);
--------------------
実行結果
acde

(4)deleteCharAtメソッド【位置】
引数で指定した位置の文字を削除する。
--------------------
StringBuilder sb = new StringBuilder("abcde");
sb.deleteCharAt(2);
System.out.println(sb);
--------------------
実行結果
abde

(5)reverseメソッド
文字列を反転する。
--------------------
StringBuilder sb = new StringBuilder("abcde");
sb.reverse();
System.out.println(sb);
--------------------
実行結果
edcba

(6)replaceメソッド【範囲】
引数(第1、第2)で指定した範囲の文字列を第3引数の文字列に置換する。
--------------------
StringBuilder sb = new StringBuilder("abcde");
sb.replace(1,3,"a");
System.out.println(sb);
--------------------
実行結果
aaade

(7)substringメソッド【範囲】
引数(第1、第2)で指定した範囲の文字列を抽出する。
--------------------
StringBuilder sb = new StringBuilder("abcde");
sb.substring(1,3);
System.out.println(sb);
--------------------
実行結果
bc

(8)subSequenceメソッド【範囲】
引数(第1、第2)で指定した範囲の文字列を抽出する。
※内部的にはsubstringメソッドを呼び出しているため、
substringメソッドと全く同じ。
--------------------
StringBuilder sb = new StringBuilder("abcde");
sb.subSequence(1,3);
System.out.println(sb);
--------------------
実行結果
bc