文字列のメソッド　まとめ

# Stringクラス
文字列に対するメソッドのまとめ

## equals()
2つのインスタンスの内容が同じかを比較する。同じであれば**true**、差異があれば**false**を返す単純にString型の文字列を比較する時はequals()メソッドを使用する。

```java
//moji1とmoji2を比較して結果を表示させる
      System.out.println(moji1.equals(moji2));
```

## compareTo()
文字列と比較する文字列が等しい場合、**0を戻り値として返す**
比較元の文字列が比較先の文字列より大きい値の場合、**正の値**を返す
比較元の文字列が比較先の文字列より小さい値の場合、**負の値**を返す	
```java
System.out.println(比較元.compareTo(比較先));
```
文字列を比較した場合、比較元が比較先より50音順が早ければ負の値。
比較元が比較先より50音順が遅ければ正の値。
文字列が同じなら0。
(比較元アイウエオは比較先カキクケコより50音順が遅れているからマイナスと覚える。50音順が比較先より早ければプラスポイント。)

``` Java
package text.section_19;

public class String_Test2 {

	public static void main(String[] args) {
		String A = "あいうえお";
		String B = "かきくけこ";
		String C = "あいうえお";		
		
		// 文字列の比較
		System.out.println(A.compareTo(B));
		System.out.println(B.compareTo(A));
		System.out.println(A.compareTo(C));
	}
}
```
実行結果
```java
-9
9
0
```
数値と文字数も同じように比較してくれる。
```java
// 文字数の比較
package text.section_19;

public class String_Test2 {

	public static void main(String[] args) {
		String A = "あ";
		String B = "あああ";
		String C = "あ";	
		
		// 文字数の比較
		System.out.println(A.compareTo(B));
		System.out.println(B.compareTo(A));
		System.out.println(A.compareTo(C));
	}
}
```
実行結果
```java
-2
2
0
```

数値の比較
```java
package text.section_19;

public class String_Test2 {

	public static void main(String[] args) {
		String A = "1";
		String B = "10";
		String C = "1";	
		
		// 数値の比較
		System.out.println(A.compareTo(B));
		System.out.println(B.compareTo(A));
		System.out.println(A.compareTo(C));
	}
}
 ```

 実行結果
 ```java
 -1
1
0
```
## substring()
指定した位置の文字列を切り出して返す。
文字列にインデックスが振られており、開始位置が0となる。
```java
package text.section_19;

public class String_Test2 {

	public static void main(String[] args) {
		String A = "私の名前は山田花子です";
		
		// 開始位置のみ指定
		System.out.println(A.substring(5));
		//開始位置と終点を指定
		System.out.println(A.substring(5,9));
		System.out.println(A.substring(5,10));
		System.out.println(A.substring(5,11));
	}
}
```
実行結果
```java
山田花子です
山田花子
山田花子で
山田花子です
```
0私1の2名3前4は5山6田7花8子9で10す11
少々わかりづらい羅列だが、インデックスは上記のように振られている。

## replace()
文字列を置換し、戻り値は置換後の文字列
```java
package text.section_19;

public class String_Test2 {

	public static void main(String[] args) {
		String A = "猫";
		String B = "犬　　と猫";
		String C = "犬とライオン";
		
		// "猫"を"犬"に置換
		System.out.println(A.replace("猫","犬"));
		//全角の空白2個を空白なしに置換
		System.out.println(B.replace("　　",""));
		//　一部のみ置換
		System.out.println(C.replace("ライオン","猫"));
		
	}
}
```
実行結果
```java
犬
犬と猫
犬と猫
```
文字列の一部修正したいところだけを、置換することも可能。

## split()
指定した文字列をポイントにして文字列を分割して、分割後の文字列を返す。何分割にするかも指定できる。
```java
package text.section_19;

public class String_Test2 {

	public static void main(String[] args) {
		String A = "猫と犬と鳥と魚";
		
		// "と"をポイントにして分割
		String[] array1 = A.split("と");
		for (int i = 0; i < array1.length; i++) {
			System.out.println(array1[i]);
		}
		
		System.out.println("以下は分割数を指定した場合");
		
		// 分割数を指定
		String[] array2 = A.split("と",2);
		for (int i = 0; i < array2.length; i++) {
			System.out.println(array2[i]);
		}
	}
}
```
実行結果
```java
猫
犬
鳥
魚
以下は分割数を指定した場合
猫
犬と鳥と魚
```
分割すれば4つになる文字列を2分割や3分割をした場合、上記のように1番目は一文字で2番目以降にまとめられる。

## trim()
文字列の先頭と末尾の空白を削除して返す
```java
package text.section_19;

public class String_Test2 {

	public static void main(String[] args) {
		String A = "	あい うえお　";
		String B = "\n\tかき\tくけこ\n";
		
		System.out.println(A.trim());
		System.out.println(B.trim());
	}
}
```
実行結果
```java
あい うえお　
かき	くけこ
```
文字列の先頭と末尾の空白やタブ、エスケープシーケンスは綺麗に消されている。
一方で、文字列の空白はそのまま。(文字列内の空白を消すときは`replace()`)