Stringクラス – エンジニアの入り口 https://eng-entrance.com 「エンジニアの入り口」は、プログラミング入門やエンジニアリング入門の知識が満載の初心者のための勉強サイトです。プログラミングやサーバ、ネットワークの基礎知識や勉強方法を習得できます。 Mon, 01 Mar 2021 04:29:09 +0000 ja hourly 1 https://wordpress.org/?v=5.2.19 2分で理解!Javaの文字列を分割するsplitメソッド【Stringクラス】 https://eng-entrance.com/java-string-split https://eng-entrance.com/java-string-split#respond Fri, 02 Sep 2016 23:59:10 +0000 http://eng-entrance.com/?p=2478 Javaで文字列を分割するにはStringクラスのsplitメソッドを使う。

このページではsplitクラスの使い方をすぐにわかるようにまとめた。分割数を制限する方法や注意点などもまとめているため参考にしていただければと思う。

文字列を分割する(split)

splitメソッド

文字列.split(String regrex )

regrex:正規表現一致

戻り値の型

String[]

内容

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

split(String regrex)は、文字列をregrexで指定された正規表現に一致するところで分割し、String型の配列として返すメソッドだ。csvファイルというカンマ区切りの文字列からなるファイルを操作するときなど、よく使われるメソッドだ。

※正規表現とは文字列のパターンを表す表現方法だ。 通常の文字(a~z)と特殊文字でそのパターンを表現している。そのパターンを用いることによって「数字に一致する」など複雑な条件にすることもできる。

サンプルコード

public class StringSample10 {
    public static void main(String[] args) {
        String message ; 
        message = "赤1青2黄色3白5緑" ";//[1]
        String[] resultArray = message.split("[0-9]");//[2]
        
        for (int i = 0; i < resultArray.length; i++) {//[3]
            System.out.println(resultArray[i]);//[4]
        }
    }
}

実行結果

赤
青
黄色
白
緑
黒

サンプルコードの説明

  • [1] String型の変数messageの初期化。
  • [2] 変数messageをsplit()メソッドを使い0から9の数字に一致したところで分割しresultArrayに代入。
  • [3] 配列resultArrayをfor文で要素の数だけ繰り返す。
  • [4] 配列resultArrayに代入されている値を出力。 

文字列の数を指定したいとき

limitが使える。

split(String regrex ,int limit)

戻り値の型

String[]

内容

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

split(String regrex, int limit)は、文字列をregrexで指定された正規表現に一致するところで分割する。文字列の分割はlimitで指定された回数-1になるまで行われる。

つまり、返されるString型の配列の要素数はlimitで指定された数より多くなることがなくなる。

サンプルコード

public class StringSample11 {
    public static void main(String[] args) {
        String message ; 
        message = "赤、青、黄色、白、緑、黒";//[1]
        
        String[] resultArray = message.split("、",3);//[2]
        
        for (int i = 0; i < resultArray.length; i++) {//[3]
            System.out.println(resultArray[i]);//[4]
        }
    }
}

実行結果

赤
青
黄色、白、緑、黒

サンプルコードの説明

  • [1] String型の変数messageの初期化。
  • [2] 変数messageをsplit()メソッドを使い「、」に一致したところで2回まで分割しresultArrayに代入。
  • [3] 配列resultArrayをfor文で要素の数だけ繰り返す。
  • [4] 配列resultArrayに代入されている値を出力。

正規表現で区切るときの注意

splitメソッドの引数String regrexには正規表現のパターンを指定できる。このとき気をつけてほしいのが特別な意味を持つ文字で区切りたいと思う場合だ。

たとえば、ドット(.)は正規表現では「任意の文字」という意味をもつ。

そのため、ドットのみを引数で指定してもドットで分割した結果は返ってこない。

このような正規表現で使う特別な意味を持った文字を単なる文字として扱いたい場合には

「エスケープ処理」が必要となる。

ドットの場合は「¥¥」を入れることで単なる文字として扱われるようになる。

では、サンプルコードで確認しよう。

サンプルコード

public class StringSample10 {
    public static void main(String[] args) {
        String message ; 
        message = "aaa.bbb.ccc.ddd";//[1]
        String[] resultArray1 = message.split(".");//[2]
        String[] resultArray2 = message.split("\\.");//[3]
         System.out.println("エスケープ処理をしなかった場合の分割数:" + resultArray1.length); //[4]
         System.out.println("エスケープ処理をした場合の分割数:" +resultArray2.length); [5]
        for (int i = 0; i < resultArray1.length; i++) {//[6]
            System.out.println(resultArray1[i]);//[7]
        }
         for (int i = 0; i < resultArray2.length; i++) {//[8]
            System.out.println(resultArray2[i]);//[9]
        }
    }
}

実行結果

エスケープ処理をしなかった場合の分割数:0
エスケープ処理をした場合の分割数:4
aaa
bbb
ccc
ddd

サンプルコードの説明

  • [1] 変数messageに「bbb.ccc.ddd」を代入。
  • [2] 変数messageをsplit()メソッドを使い「.」で一致したところで分割しresultArray1に代入。
  • [3] 変数messageをsplit()メソッドを使いエスケープした「\\.」で一致したところで分割しresultArray2に代入。
  • [4]resultArray1の配列の要素数(→分割された数)を出力。
  • [5]resultArray2の配列の要素数(→分割された数)を出力。
  • [6] 配列resultArray1をfor文で要素の数だけ繰り返す。
  • [7] 配列resultArray1に代入されている値を出力。
  • [8] 配列resultArray2をfor文で要素の数だけ繰り返す。
  • [9] 配列resultArray3に代入されている値を出力。

まとめ

このページではJavaで文字列を分割するために使うsplitについてまとめた。

ただ、分割するだけでなく、分割数を制限することなども可能だ。ぜひ参考にしていただければと思う。

]]>
https://eng-entrance.com/java-string-split/feed 0
2分で理解!Javaで文字列を置換するreplaceFirst,replaceAll【Stringクラス】 https://eng-entrance.com/java-string-replacefirst-replaceall https://eng-entrance.com/java-string-replacefirst-replaceall#respond Fri, 02 Sep 2016 23:17:01 +0000 http://eng-entrance.com/?p=2474 Javaで文字列を置換するには、StringクラスのreplaceFirstもしくはreplaceAllを使うのがいい。

このページではreplaceFirts、replaceAllそれぞれの使い方とサンプルプログラムをご紹介する。

最初に該当した文字列を置換する(replaceFirst)

replaceFirstメソッド

replaceFirst( String regrex , String replacement )

regrex:置換前の文字列 replacement:置換後の文字列

戻り値の型

String

内容

指定された正規表現に一致する、この文字列の最初の部分文字列に対し、指定された置換を実行する。

replaceFirst(String regrex, String replacement)は、文字列にregrexと一致するものがあった場合、最初に一致したもののみreplacementに置き換えて値を返すメソッドだ。

サンプルコード

サンプルコードは簡単だが、次の通りだ。

public class StringSample12 {
    public static void main(String[] args) {
        String message ; 
        message = "ABCABCABCABCABC";//[1]
        String result = message.replaceFirst("A","YYY");//[2]
        System.out.println("もとの文字列:" + message);
        System.out.println("置換した文字列:" + result);//[3]   
   }
}

実行結果

もとの文字列:ABCABCABCABCABC
置換した文字列:YYYBCABCABCABCABC

サンプルコードの説明

  • [1] String型の変数messageを初期化。
  • [2] replaceFirstメソッドを使用してmessageに代入されている"ABCABCABCABCABC"の中で最初に出現するAをYYYに置き換え、変数resultに代入。
  • [3] 変数resultを出力。

このように最初に一致した部分のみが変更される。

該当した文字列すべてを置換する(replaceAll)

replaceAll(String regrex , String replacement)

regrex:置換前の文字列 replacement:置換後の文字列

戻り値の型

String

内容

指定した正規表現に一致する部分を、指定した文字列で置き換える。

replaceAll(String regrex, String replacement)は、文字列にregrexと一致するものがあった場合すべてreplacementに置き換えて値を返すメソッドだ。

サンプルコード

public class StringSample13 {
    public static void main(String[] args) {
        String message ; 
        message = "ABCABCABCABCABC";//[1]
        String result = message.replaceAll("A","YYY");//[2]
        System.out.println("もとの文字列:" + message);
        System.out.println("置換した文字列:" + result);//[3]    
   }
}

実行結果

もとの文字列:ABCABCABCABCABC
置換した文字列:YYYBCYYYBCYYYBCYYYBCYYYBC

サンプルコードの説明

  • [1] String型の変数messageを初期化。
  • [2] replaceAllメソッドを使用してmessageに代入されている"ABCABCABCABCABC"の中に出現するAをすべてYYYに置き換え、変数resultに代入。
  • [3] 変数resultを出力。

注意点:置換前は「正規表現」

上では置換前・置換後と書けば動くようにお伝えしたが、厳密には違う。

replaceFirst,replaceAllともに注意したいのが、置換するときの検索文字列String regrexは正規表現を扱うものだということだ。regrexなので当たり前なのだが。

「○○に一致する」という複雑な条件を設定できる一方、単なる文字として一致させようとしたものが正規表現の特殊な意味ととられてしまい、意図したものとちがう動きをする場合がある。

サンプルコード

public class StringSample131 {
    public static void main(String[] args) {
        String message ; 
        message = "A.B.C.D";//[1]
        
        String result1 = message.replaceAll(".","1");//[2]
        System.out.println("もとの文字列:" + message);
        System.out.println("エスケープなしで置換した文字列:" + result1);//[3]
        
        String result2 = message.replaceAll("\\.","1");//[4]
        System.out.println("もとの文字列:" + message);
        System.out.println("エスケープして置換した文字列:" + result2);//[5]
    }
}

実行結果

もとの文字列:A.B.C.D
エスケープなしで置換した文字列:1111111
もとの文字列:A.B.C.D
エスケープして置換した文字列:A1B1C1D

サンプルコードの説明

  • [1] String型の変数messageを初期化。
  • [2] replaceAllメソッドを使用してmessageに代入されている" A.B.C.D "の中に出現するドット(.)をエスケープなしで1に置き換え、変数result1に代入。
  • [3] 変数result1を出力→ エスケープされていないのでドットは単なる文字ではなく
  • 正規表現で意味するすべての文字を表すドットと解釈される。そのため、" A.B.C.D "すべて1に置き換わる。
  • [4] replaceAllメソッドを使用してmessageに代入されている" A.B.C.D "の中に出現するドット(.)をエスケープして1に置き換え、変数result2に代入。
  • [5] 変数result2を出力 → \\でエスケープすることで、ドットは単なる文字のドットと解釈され、" A.B.C.D "のドットの部分のみ1に置き換わる。

まとめ

このページではJavaで文字列を置換するための方法についてお伝えした。

  • 最初のひとつだけ:replaceFirst
  • すべて置換:replaceAll

この二つのStringクラスメソッドを使い分ければ実行可能だ。

]]>
https://eng-entrance.com/java-string-replacefirst-replaceall/feed 0
【Java】文字列を大文字や小文字に変換するtoUpperCase・toLowerCase https://eng-entrance.com/java-string-touppercase-tolowercase https://eng-entrance.com/java-string-touppercase-tolowercase#respond Thu, 01 Sep 2016 00:19:49 +0000 http://eng-entrance.com/?p=2451 Javaでプログラムを書いている最中、すべての文字列を大文字に変換したり、反対に小文字に変換をするという処理がときどきある。

そこで使えるのがStringクラスのtoUpperCaseとtoLowerCaseだ。このページではこれらのメソッドの使い方をご紹介しよう。

1分あれば十分に使い方を把握できる。

文字列を大文字、小文字へ変換する

toUpperCase

すべての文字を大文字にするのに使えるのが、toUpperCaseメソッドだ。

使い方は次の通り簡単だ。

文字列.toUpperCase( )

戻り値の型

String

内容

この文字列のすべての文字を大文字で返す。

toLowerCase

反対にすべての文字を小文字に変えるのがtoLowerCaseメソッドだ。使い方は次の通り。

文字列.toLowerCase( )

戻り値の型

String

内容

この文字列のすべての文字を小文字で返す。

サンプルコード

それではサンプルコードを見てみよう。

public class StringSample8 {
    public static void main(String[] args) {
        String komoji ; 
        String oonmoji ;
        komoji = "hello";
        oonmoji = "HI";
        String resultKomoji = komoji.toUpperCase();//[1]
        String resultOomoji = oonmoji.toLowerCase();//[2]
        System.out.println(komoji + "は「" + resultKomoji + "」に変換。" ); //[3]
        System.out.println(oonmoji + "は「" + resultOomoji + "」に変換。"  ); //[4]
    }
}

実行結果

helloは「HELLO」に変換。
HIは「hi」に変換。

サンプルコードの説明

説明しなくともわかるかとは思うが、次のように動いている。

  • [1] 変数komojiをtoUpperCase()で大文字に変換し、resultKomojiへ代入。
  • [2] 変数oonmojiをtoLowerCase ()で大文字に変換し、へ代入。
  • [3] 変数resultKomojiを出力。
  • [4] 変数resultOomojiを出力。

 

大文字小文字が混在する文字列を比較するサンプルコード

これらのメソッドは、出力文字列の体裁を整える場合によく使われるが、他の使い方もある。

例えば、条件分岐などで文字列を比較する際に、大文字・小文字が混在している可能性がある場合がある。そのような時は、「いったん大文字もしくは小文字に変換してから比較する」というような処理を行う場合もある。

public class StringSample81 {
    public static void main(String[] args) {
        String str1 ; 
        String str2 ; 
        str1 = "Hello";
        str2 = " heLLo";
        String resultKomoji1 = str1.toUpperCase();//[1]
        String resultOomoji1 = str1.toLowerCase();//[2]
        String resultKomoji2 = str2.toUpperCase();//[3]
        String resultOomoji2 = str2.toLowerCase();//[4]
        System.out.println( "変換前の比較:" + str1.equals(str2) ); //[5]
        System.out.println( "大文字に変換して比較:" + resultKomoji1.equals(resultKomoji2) ); //[6]
        System.out.println( "小文字に変換して比較:" + resultOomoji1.equals(resultOomoji2) ); //[7]
    }
}

実行結果

変換前の比較:false
大文字に変換して比較:true
小文字に変換して比較:true

サンプルコードの説明

  • [1] 大文字小文字混在の文字列の変数str1を小文字に変換し、変数resultKomoji1へ代入。
  • [2] 大文字小文字混在の文字列の変数str1を大文字に変換し、変数resultOomoji1へ代入。
  • [3] 大文字小文字混在の文字列の変数str2を小文字に変換し、変数resultKomoji2へ代入。
  • [4] 大文字小文字混在の文字列の変数str2を小文字に変換し、変数resultOomoji2へ代入。
  • [5] 変換前の文字列を比較した結果を出力
  • [6] 大文字に変換したresultKomoji1とresultKomoji2を比較した結果を出力。
  • [7] 小文字に変換したresultOomoji1とresultOomoji2を比較した結果を出力。

このようにすることで文字列比較が正確にできる。

まとめ

このページではJavaで大文字や小文字に変換する方法をお伝えした。

覚える必要はないだろうが、こういったメソッドがあるというのは覚えておくと後々役に立つことがあるだろう。

]]>
https://eng-entrance.com/java-string-touppercase-tolowercase/feed 0
1分でわかる文字列の一部を切り出しするsubstringの使い方【Java Stringクラス】 https://eng-entrance.com/java-string-substring https://eng-entrance.com/java-string-substring#respond Wed, 31 Aug 2016 23:17:25 +0000 http://eng-entrance.com/?p=2439 Stringクラスには様々なメソッドがあるが、文字列の中の一部を切り出すこともできる。

このページではJavaで文字列の一部を切り出すために使えるsubstringについてご紹介しよう。

文字列の一部を切り出しする(substring)

substringメソッドの基本的な使い方

substringは文字列の一部を取得するためのメソッドだ。使い方も簡単だ。

文字列.substring( int biginIndex)

biginIndex → 開始インデックス(この位置にある文字は含まれる)

戻り値の型

String

内容

この文字列の部分文字列である新しい文字列を返する。

substring(int biginIndex)は、文字列からbiginIndexで指定された位置にある文字から最後までを切り取り、新しい文字列として返すメソッドだ。

サンプルコード

public class StringSample6 {
    public static void main(String[] args) {
        String message ; //[1]
        message = "おはようございます。気持ちのいい朝です。";//[2]
        String result = message.substring(4);//[3]
        System.out.println("取得したのは「" + result + "」です。" ); //[4]
    }
}

実行結果

取得したのは「ございます。気持ちのいい朝です。」です。

サンプルコードの説明

下記がサンプルコードの内容だ。

  • [1] String型の変数messageの宣言
  • [2] 変数messageの初期化.し、文字を代入。
  • [3] substringを使用して変数messageの4文字目から最後までを取得し、変数resultへ代入。(※)
  • [4] 変数resultを出力。

4文字目は0文字から始まっているので「おはようございます。気持ちのいい朝です。」の「う」ではなく、「ご」になる。

普通、数字を数えるときは1,2,3と数えるが、Java言語では0から始まり0,1,2,3…となる。

「何文字目」という切り出す始まりの文字位置の考え方は間違えやすいので注意してほしい。この何文字目ということを「インデックス」と表現する。

substringで間を取得する方法

「○文字目から最後」という設定だけではなく、「○文字目から○文字目」という取得もできる。使い方は次の通りだ。

文字列.substring( int biginIndex,int endIndex)

  • biginIndex → 開始インデックス(この位置にある文字は含まれる)
  • endIndex → 終了インデックス(この位置にある文字は含まれない)

戻り値の型

String

内容

この文字列の部分文字列である新しい文字列を返す。

substring(int biginIndex, int endIndex)は、文字列からbiginIndexで指定された位置にある文字からendIndexまでの文字を切り取り、新しい文字列として返すメソッドだ。

ここでの注意する点は、endIndexで指定されたインデックスの文字は含まれないということだ。

「あいうえお」という文字列を「いう」という形で取り出したいと思う場合

「あいうえお」のインデックスは

あ → インデックス0

い → インデックス1

う → インデックス2

え → インデックス3

お → インデックス4

となる。

substring(1,3)は

biginIndex → 1

endIndex → 3

ということで、「いう」という新しい文字列が取得できる。

サンプルコード

public class StringSample7 {
    public static void main(String[] args) {
        String message ; //[1]
        message = "おはようございます。気持ちのいい朝です。";//[2]
        String result = message.substring(0,4);//[3]
        System.out.println("取得したのは「" + result + "」です。" ); //[4]
    }
}

実行結果

取得したのは「おはよう」です。

サンプルコードの説明

  • [1] String型の変数messageの宣言
  • [2] 変数messageの初期化.。文字列の代入。
  • [3] substringを使用して変数messageの0番目である「お」から4番目のひとつ前の「う」までを取得し、変数resultへ代入。
  • [4] 変数resultを出力。

substringで文字列の体裁を整える

substringメソッドは文字列から必要な部分を取り出して文字列の体裁を整える場合に使用されることも多い。

たとえば、「20160101」などの形式で入力されている文字列の体裁を年月日に変更する場合は以下のサンプルコードのようになる。

サンプルコード

public class StringSample61 {
    public static void main(String[] args) {
        String date ; //[1]
        date = "20160101";//[2]
        String year = date.substring(0,4);//[3]
        String month = date.substring(4,6);//[4]
        String day = date.substring(6);//[5]
	System.out.println("もとの文字列:" + date);
        System.out.println("日付は" + year + "年" + month + "月" + day  + "日です。"); //[6]
    }
}

実行結果

もとの文字列:20160101
日付は2016年01月01日です。

サンプルコードの説明

  • [1] String型の変数dateの宣言
  • [2] 変数dateの初期化.。文字列「20160101」の代入。
  • [3] substringを使用して変数dateの0番目である「2」から4番目のひとつ前の「6」までを取得し、変数yearへ代入。
  • [4] substringを使用して変数dateの4番目である「0」から6番目のひとつ前の「1」までを取得し、変数monthへ代入。
  • [5] substringを使用して変数dateの6番目である「0」最後までを取得し、変数dayへ代入。
  • [6] それぞれ変換した新しい文字列を組み合わせて年月日形式にした値を出力。

Stringに代入した文字列は変えることができないので、substringを使用して取り出した文字列を再度利用したい場合は、新しい文字列に代入して値を保持する必要がある。

まとめ

このページではJavaで一部の文字を切り出すsubstringメソッドについてお伝えした。

色々な場面で使う機会があるメソッドなので、細かい使い方はともかくとして、メソッド名だけは覚えておこう。

]]>
https://eng-entrance.com/java-string-substring/feed 0
1分でわかるJavaで空白を取り除くtrim / stripの使い方【Stringクラス】 https://eng-entrance.com/java-string-trim https://eng-entrance.com/java-string-trim#comments Mon, 29 Aug 2016 23:40:04 +0000 http://eng-entrance.com/?p=2418 文字列の前後に空白が入り、それを削除したいということはよくある。

特にユーザが入力する場所やExcel保存していたもののシステム化などの際、よく発生するだろう。そういった際に使えるものの一つとしてStringクラスのtrimがある。

このページではtrimについてお伝えした。参考にしていただければと思う。

文字列の前後の空白を取り除く(trim)

文字列の前後の空白を取り除くのにはtrimメソッドが使える。文字列の途中の空白は取らないので注意が必要だ。

文字列.trim( )

戻り値の型

String

内容

この文字列のコピーを返します。先頭と最後の空白を取り除く。

trim ()は、文字列の先頭と最後に空白があった場合には取り除いて文字列を返すメソッドだ。

再度お伝えするが、先頭と最後のみ取り除くので、途中にある空白は取り除かない。

また、ここで言う空白は半角の空白である。全角の空白は対象とならないため注意してほしい。全角の空白の削除方法も後でお伝えする。

サンプルコード

それではサンプルコードを見てみよう。

public class StringSample9 {
    public static void main(String[] args) {
        String message ; 
        message = "   おはようございます。気持ちのいい朝です。  ";//[1]
        String result = message.trim();//[2]
        System.out.println("もとの文字列:" + message + "です。" ); //[3]
        System.out.println("空白を取り除いた文字列:" +result+ "です。" ); //[4]
        
        //空白が全角の場合
        System.out.println("----------------------" ); 
        String message1 ; 
        message1 = "   おはようございます。気持ちのいい朝です。  ";//[5]
        String result1 = message1.trim();//[6]
        System.out.println("もとの文字列:" + message1 + "です。" ); //[7]
        System.out.println("空白を取り除いた文字列:" +result1+ "です。" ); //[8]
        
    }
}

実行結果

上が半角スペースの時、下が全角スペースの時だ。

もとの文字列:   おはようございます。気持ちのいい朝です。  です。

空白を取り除いた文字列:おはようございます。気持ちのいい朝です。です。

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

もとの文字列:   おはようございます。気持ちのいい朝です。  です。

空白を取り除いた文字列:   おはようございます。気持ちのいい朝です。  です。

このように全角スペースは取り除かれない。全角スペースを取り除きたいときの方法は下に用意した。

サンプルコードの説明

一応、サンプルコードの説明もしておこう。

  • [1] String型の変数messageの初期化。
  • [2] 変数messageからtrim()メソッドで文字列の前後の空白を取り除き、String型変数resultへ代入。
  • [3] 変数messageを出力。
  • [4] 変数resultを出力。
  • [5] 変数message1の初期化
  • [6] 変数message1からtrim()メソッドで文字列の前後の空白を取り除き、String型変数result1へ代入。
  • [7] 変数message1を出力。
  • [8] 変数result1を出力。

 

空白を取り除いて比較するサンプルコード

trimは、入力された文字列とある文字列を比較したい時などにも使用する。

入力時に空白文字などが入っていると、一見同じ文字列でも比較した場合「一致しない」となってしまうためだ。

public class StringSample91 {
    public static void main(String[] args) {
        String inputStr ; //[1]
        inputStr = "福岡県 ";//[2]
        String compareStr = "福岡県";//[3]
        System.out.println("trimを使用しない場合の結果:" + compareStr.equals(inputStr) + "です。" ); //[4]
        System.out.println("trimを使用した場合の結果:" + compareStr.equals(inputStr.trim()) + "です。" ); //[5]
    }
}

実行結果

trimを使用しない場合の結果:falseです。
trimを使用した場合の結果:trueです。

サンプルコードの説明

  • [1] String型の変数inputStrの宣言。これを入力された文字列と仮に想定。
  • [2] 変数inputStrへ末尾に半角空白をつけた「福岡県 」を代入。
  • [3] 比較に使用する変数compareStrを宣言し、空白なしの「福岡県」で初期化。
  • [4] trimを使用せずにinputStrとcompareStrを比較し結果を出力。
  • [5] trimを使用してinputStrとcompareStrを比較し結果を出力。

全角スペースも除去したいとき(strip)

全角スペースを除去したいときは、Java11より追加されたstripを利用しよう。

 

文字列.strip( )

戻り値の型

String

内容

この文字列のコピーを返します。先頭と最後の空白(全角スペース含む)を取り除く。

strip ()は、文字列の先頭と最後に全角スペースを含んだ空白があった場合には取り除いた文字列を返すメソッドだ。

stripを利用したサンプルコード

public class Sample {
	public static void main(String[] args) {
		// こんにちはとこんばんはの前後それぞれに、全角スペースと半角スペース
		String str = "  こんにちは。  こんばんは  ";
		System.out.println(str.trim());
		System.out.println(str.strip());
	}
}

実行結果

  こんにちは。  こんばんは 
こんにちは。  こんばんは

サンプルコードの説明

trimの場合は行末の半角スペースのみが除去されているのに対して、stripは全角スペース・半角スペース共に除去されているのが確認できる。

 

まとめ

このページではStringクラスのtrimメソッドを使って、文字列の前後から空白を除去する方法をお伝えした。

全角スペースには対応していないので、必要に応じてstripメソッドと使い分ける必要があるだろう。

参考にしていただければと思う。

]]>
https://eng-entrance.com/java-string-trim/feed 3
1分でわかるJavaで文字数を求めるlengthの使い方【Stringクラス】 https://eng-entrance.com/java-string-length https://eng-entrance.com/java-string-length#comments Mon, 29 Aug 2016 23:05:59 +0000 http://eng-entrance.com/?p=2414 Javaで文字列の文字数を調べたいという機会は結構あるはずだ。

Stringクラスのlengthメソッドを使えば簡単に文字数をカウントできる。このページではlengthメソッドについてまとめたので参考にしてほしい。

文字数を求める(length)

lengthメソッド

文字列の長さを求めるにはStringクラスのlengthメソッドが使える。使い方は次の通り簡単だ。

文字列.length( )

戻り値の型

int

内容

この文字列の長さを返する。

length()は文字の長さを返す。ここでいう長さとは、バイト数ではなく文字数のことだ。つまり半角、全角関係なく文字列の文字数を返してくれる。

サンプルコード

ではサンプルコードを見てみよう。

public class StringSample5 {
    public static void main(String[] args) {
        String message ; //[1]
        message = "おはようございます。気持ちのいい朝です。";//[2]
        int num = message.length();//[3]
         System.out.println("「" + message + "」の文字数は" + num + "です。" );  //[4]
    }
}

実行結果

「おはようございます。気持ちのいい朝です。」の文字数は20です。

サンプルコードの説明

  • [1] String型の変数messageの宣言
  • [2] 変数messageの初期化。文字列を代入。
  • [3] 変数numに.length()の結果である文字数を代入。
  • [4] 変数numの値を出力。

という感じだ。とてもシンプルで使いやすい。

処理の繰り返しに使われるサンプルコード

単純に文字の数を調べたい場合もあるが、繰り返し処理の条件式で、lengthメソッドを使用して文字の長さを取得し、その文字数だけ処理を繰り返す場合に使われることも多い。

public class StringSample51 {
    public static void main(String[] args) {
       String message ; //[1]
       message = "おはようございます。気持ちのいい朝です。";//[2]
       System.out.println("「" + message + "」の文字数は" + message.length() + "です。" ); //[3]
        for (int i = 1; i <= message.length(); i++) {//[4]
             System.out.println(i + "回目の処理です。" ); 
        }
    }
}

実行結果

実行結果は次の通りだ。

「おはようございます。気持ちのいい朝です。」の文字数は20です。
1回目の処理です。
2回目の処理です。
3回目の処理です。
4回目の処理です。
5回目の処理です。
6回目の処理です。
7回目の処理です。
8回目の処理です。
9回目の処理です。
10回目の処理です。
11回目の処理です。
12回目の処理です。
13回目の処理です。
14回目の処理です。
15回目の処理です。
16回目の処理です。
17回目の処理です。
18回目の処理です。
19回目の処理です。
20回目の処理です。

サンプルコードの説明

サンプルコードの説明も軽くしておこう。

  • [1] String型の変数messageの宣言
  • [2] 変数messageの初期化。文字列を代入。
  • [3].length()の結果である文字数を出力。
  • [4] messageの文字数分、繰り返し処理を行う。

lengthとlength()の違い

配列で使うlengthとは違うので注意をしよう。

  • 配列.lengthは配列の要素の数を返す。
  • 文字列.length()は文字列の文字数を返す。

似ているようで違うlengthとlength()の違いはフィールドとメソッドの違いだ。

lengthはフィールド、length()はメソッドである。

簡単にいうなら、lengthは配列の要素の数を入れる箱であり、length()は文字列の文字数を数えて返す処理をする機能である。

まとめ

このページではJavaで文字数をカウントするlengthメソッドについてお伝えした。

簡単なメソッドなのですぐに使い方はわかるだろう。参考にしていただければと思う。

]]>
https://eng-entrance.com/java-string-length/feed 2