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クラスのメソッド】
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クラスのメソッド】
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