こんにちは。「Javaを復習する初心者」です。
Strignクラスには文字列の両端の空白を除去するというメソッドString#trimというのがあります。両端の空白は連続していた場合、その分も除去されます。では左端や右端だけの空白除去をするメソッドはあるのかなと思ったら、見つかりませんでした。なので今回は左端の空白だけ除去するメソッドを作ってみます。
String#trimメソッド
先にString#trimメソッドの紹介です。このメソッドは両端の連続する空白を除去した新しいStringオブジェクトを返却してくれます。元のStringは変更されません。(Stringオブジェクトは不変です。)
以下はソースと実行結果です。String型変数sを定義し、trimした結果をString型変数tに格納しています。右側の空白が除去されたかどうかの確認のため、長さも出力しています。
ソースコード
package stringTest;
public class HelloTrim {
public static void main(String[] args) {
String s = " Hello ";
String t = s.trim();
System.out.println(s);
System.out.println("sの長さ: " + s.length());
System.out.println(t);
System.out.println("tの長さ: " + t.length());
}
}
結果
Hello
sの長さ: 15
Hello
tの長さ: 5
長さを見ると、両側の空白が全て除去されているのが確認できます。
左側のみの空白除去
次に、左側のみの空白除去についてです。手順は以下になります。
- int型変数startPosを定義する。
- 繰り返しカウンタiが0からs.length()未満まで以下を繰り返す。
- s.charAt(i)が空白でない場合、
- startPosにiを格納する。
- 繰り返しを抜ける。
- s.charAt(i)が空白でない場合、
- s.substring(startPos)を返却する。
以下はソースと実行結果です。
ソースコード
package stringTest;
public class HelloTrimLeft {
public static void main(String[] args) {
String s = " Hello ";
System.out.println(s);
System.out.println("sの長さ: " + s.length());
s = trimLeft(s);
System.out.println(s);
System.out.println("sの長さ: " + s.length());
}
private static String trimLeft(String s) {
int startPos = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) != ' ') {
startPos = i;
break;
}
}
return s.substring(startPos);
}
}
結果
Hello
sの長さ: 15
Hello
sの長さ: 12
長さを見ると、左側の空白のみが除去されているのが分かります。おそらく、左側のみの空白除去は使う機会はないと思います。今回はcharAtメソッド、substringメソッドの練習にはなりました。