[[TopPage]] > [[演習課題]] > 演習1-4 * 文字列処理 [#vd94a729] Javaには,文字列(String)という概念があります. String型を使うと,文字列に関するさまざまな処理ができます. 以下のプログラムでは,文字列の基本的な処理機能について説明します. &ref(StringTest.java,,,StringTest.java ダウンロード);/[[ソースコードファイルを見る>http://yoshino.sys.wakayama-u.ac.jp/netprog/source/StringTest.java]] ** 文字列の宣言 [#cda3bdde] 以下のように,文字列(String)型に値を代入するには,代入文字を””(ダブルコーテーション)で囲います. // 文字列の宣言,宣言とともに値を設定 String a = "Good "; String b = "Morning!"; ** コマンドプロンプト(コンソール)への出力 [#s6e642d9] [[はじめてのJava>演習0 文字列の画面出力]]で説明したとおり,文字列をコンソールに表示する方法です. // System.out.printlnはコマンドプロンプト(コンソール)への出力 System.out.println("a=" + a); System.out.println("b=" + b); ** 文字列の結合 [#yb78b507] 文字列同士を結合するには,+記号を使います. (一方が数値などの場合は,数値を「文字列」にしてから結合します) // 文字列は+で文字列同士を連結する String c = a+b; System.out.println("c=" + c); ** 文字列の比較(equals) [#b9e18066] 2つの文字列を比較をします.大文字・小文字を区別します. &color(red,yellow){''重要:''}; Javaでは,==を使って文字列同士の比較をすることはできません. // equals()で文字列の比較を行う if (a.equals("good ")) { System.out.println("変数a の値は good です."); } else { System.out.println("変数a の値は good ではありません."); } - boolean '''String'''.''equals(''[文字列]'')''~ '''String'''の値と,''[文字列]''の値が等しければ''true''を返します.~ 値の比較には,大文字・小文字を区別します. ** 文字列の比較(equalsIgnoreCase) [#qc891a32] 2つの文字列を比較をします.大文字・小文字を%%%区別しません%%%. // equalsIgnoreCase()で大文字,小文字を無視した文字列の比較を行う if (a.equalsIgnoreCase("good ")) { System.out.println("変数a の値は good です."); } else { System.out.println("変数a の値は good ではありません."); } - boolean '''String'''.''equalsIgnoreCase(''[文字列]'')''~ '''String'''の値と,''[文字列]''の値が等しければ''true''を返します.~ 値の比較には,大文字・小文字の違いを無視します. ** 全て大文字/小文字にする [#cc212874] 文字列の全英字を大文字または小文字に置換します. //toLowerCase()で全て小文字に System.out.println(c.toLowerCase()); //toUpperCase()で全て大文字に System.out.println(c.toUpperCase()); - String '''String'''.''toLowerCase()''~ '''String'''に格納されている英字について,全て小文字に変換した文字列を返します. - String '''String'''.''toUpperCase()''~ '''String'''に格納されている英字について,全て大文字に変換した文字列を返します. ** 文字列の長さ [#f83662af] 変数に格納されている文字列の長さ(文字数)を返します. // length()で,文字列の長さを得る int alen = a.length(); int blen = b.length(); System.out.println("文字列 a の長さは " + alen ); System.out.println("文字列 b の長さは " + blen ); System.out.println("文字列 c の長さは " + c.length()); // このように書くこともできます - int '''String'''.''length()''~ '''String'''に格納されている文字列の長さを返します.~ ''戻り値''はint型です. ** 部分文字列を取り出す [#cf61dfce] 文字列から,指定した領域の文字列を取り出します. // substring(開始位置,終了位置)で,部分文字列を取り出します. // 終了位置を指定しないと,開始位置から末尾まで取り出します. String e = c.substring(2,4); // "od"が出力される. System.out.println(e); String f = c.substring(5); // "Morning!"が出力される. System.out.println(f); - String '''String'''.''substring(''[開始位置]'')'' - String '''String'''.''substring(''[開始位置]'',''[終了位置]'')''~ '''String'''文字列の指定した範囲の部分文字列を返します.~ [終了位置]を省略すると,文字列の末尾までの部分文字列を返します. &color(red,yellow){''注意:''}; ~ [終了位置]は,実際に部分文字列の末尾要素より1つ大きい値を指定します. すなわち,部分文字列の長さは,[終了位置] - [開始位置] になります. 例) String text = "ABCDEFG"; text.substring(2, 5); // "CDE" が取り出される(3文字) text.substring(4, 5); // "E" が取り出される(1文字) text.substring(5, 5); // "" 何も取り出されない(0文字) text.substring(5, 3); // エラー (-2文字になるため) ** 検討課題(練習) [#z9c323fe] Javaでは,==を使って文字列同士の比較をすることはできず,equals()を使う必要があると述べました. 本当にそうでしょうか?確認してみてください. 例) System.out.println ("確認1:"+ (a == "Good ") ); String foo= "the Good Event"; String subfoo = foo.substring(4,9); System.out.println ("|"+ subfoo +"|"); System.out.println ("確認2(==の場合):"+ (a == subfoo) ); System.out.println ("確認2(equalsの場合):"+ (a.equals(subfoo)) ); 確認1は,aとまったく同じ文字列と比較させています.~ 確認2では,"the Good Event"という文字列から,部分文字列として"Good "を取り出して比較させています. このように,条件によっては==で文字列が正しく比較できない場合があります. #br &size(16){[[&ref(http://yoshino.sys.wakayama-u.ac.jp/netprog/next.gif,nolink); 次の演習(1-5)>演習1-5 文字列処理のいろいろ]]};