こんにちは。ハンドルネーム「Javaを復習する初心者」です。このサイトはプログラミング言語Javaの復習・学習をするブログです。プログラムの開発・実行はEclipseで行ってます。
スポンサーリンク
お知らせ
  • 参考文献のページ作りました。
  • Amazon.co.jpアソシエイトに参加していますが、参考文献の紹介はもしもアフィリエイトに統一しました。
  • 2016年10月9日からは投稿ペースを落とします。週1回くらいにする予定です。
スポンサーリンク

文字列の先頭だけ空白除去する

こんにちは。「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

長さを見ると、両側の空白が全て除去されているのが確認できます。

左側のみの空白除去

次に、左側のみの空白除去についてです。手順は以下になります。

  1. int型変数startPosを定義する。
  2. 繰り返しカウンタiが0からs.length()未満まで以下を繰り返す。
    1. s.charAt(i)が空白でない場合、
      1. startPosにiを格納する。
      2. 繰り返しを抜ける。
  3. 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メソッドの練習にはなりました。