文字分割 部分取り出し
コピペさせていただきました。個人使用です。
1. 文字列先頭からの部分文字列取り出し
[ サンプルプログラムのソースコード - SubstringSample1.java - ]
|
[ サンプルプログラムの実行結果 ]
取り出し前の文字列 : 壱234伍67890
文字列先頭から3文字取り出す -> 壱23 文字列先頭から7文字取り出す -> 壱234伍67 |
[ サンプルプログラムの解説 ]
5行目:str.substr(0,3)で文字列変数strの先頭3文字を取り出して表示しています。6行目:str.substr(0,7)で文字列変数strの先頭7文字を取り出して表示しています。
{文字列オブジェクト}.substr(0,n)で文字列オブジェクトの先頭からn文字を取り出します。
2. 文字列から部分文字列を取り出す
[ サンプルプログラムのソースコード - SubstringSample2.java - ]
|
[ サンプルプログラムの実行結果 ]
取り出し前の文字列 : 壱234伍67890
文字列の3文字目から7文字目を取り出す -> 34伍67 文字列の2文字目から2文字目を取り出す -> 2 文字列の3文字目から3文字分を取り出す -> 34伍 |
[ サンプルプログラムの解説 ]
SubstringSample1と同じくsubstringで取り出します。文字列のm文字目からn文字目までを取り出すには substring(m-1,n)とします。m文字目からn文字分取り出すにはsubstring(m-1,m-1+n)とします。
3. 文字列後ろからの部分文字列取り出し
[ サンプルプログラムのソースコード - SubstringSample3.java - ]
|
[ サンプルプログラムの実行結果 ]
取り出し前の文字列 : 壱234伍67890 |
[ サンプルプログラムの解説 ]
文字列のn文字目から文字列の最後まで取り出したいときは、substring(n-1)とします。 文字列の後ろn文字分を取り出したいときは、substring(stringObject.length()-n)とします。 stringObjectというのは、文字列オブジェクトを表しています。SubstringSample3では、strがこれに該当します。 length()というのは文字列の長さを取得する文字列オブジェクトのメソッドです。
4. 指定した文字より後ろの文字列を取り出す
[ サンプルプログラムのソースコード - SubstringSample4.java - ]
|
[ サンプルプログラムの実行結果 ]
取り出し文字列->山田太郎 |
[ サンプルプログラムの解説 ]
指定した文字より後ろの文字列を取得するには、指定する文字の文字列中の位置を取得します。 文字列中の指定文字の位置は、indexOf(ch)で取得します。chには、位置を知りたい文字を設定します。サンプルでは、indexOf(":")で文字「:」の文字位置を取得しています。取得したい文字列は、「:」より後ろの 文字列なので、str.substring(index+1)でindexに1を加えた位置を指定して「:」より後ろの文字列を取得しています。
indexOfメソッドでは、文字列の指定も出来ます。この場合文字位置は、指定した文字列の先頭の文字の位置 が取得されます。そのため指定文字列から後ろの文字列を取得する場合は、indexOfメソッドで取得した文字位置に 指定文字列の長さを加算する必要があります。加算された位置情報をsubstringメソッドに指定すれば、指定文字列より後ろの 文字列を取得することが出来ます。
public class SubstringSample4A {
public static void main(String[] args) {
String str = "012:4:6:89";
// indexOfの戻り値
int index = str.indexOf(":");
System.out.println("indexOf->" + index);
// indexOfの戻り値(途中から検索)
index = str.indexOf(":",index+1);
System.out.println("indexOf->" + index);
// lastIndexOfの戻り値
index = str.lastIndexOf(":");
System.out.println("lasIndexOf->" + index);
}
}
|
例えば左のサンプルでは、検索対象文字列の中に3つの「:」が含まれています。
この文字列に対してindexOf(":")とした場合、戻り値として3が返ってきます。
indexOfに似たようなメソッドでlastIndexOfと言うメソッドもあります。indexOfメソッドでは、文字列の先頭文字から最後の文字に向かって検索が行われますが lastIndexOfの場合、引数で渡した文字または文字列を最後の文字から先頭の文字に向かって検索していきます。例えば上の文字列だとlastIndexOf(":")とした場合、 戻り値として7が返ってきます。
また、indexOf、lastIndexOfメソッドは、第2引数に与えた文字位置から検索を開始させることもできます。 左のサンプルの赤字部分が途中位置からの検索指定になります。この場合は、最初の「:」の後ろの文字から 検索を行っています。結果として2番目の「:」の文字位置が表示されています。
サンプルSubstringSample4Aの実行結果は、下のようになります。
indexOf->3 indexOf->5 lasIndexOf->7
5. 指定した文字より前の文字列を取り出す
[ サンプルプログラムのソースコード - SubstringSample5.java - ]
|
[ サンプルプログラムの実行結果 ]
取り出し文字列->氏名 取り出し文字列->氏名 |
[ サンプルプログラムの解説 ]
指定した文字より前の文字列を取り出すには、「指定した文字より後ろの文字列を取り出す」 のサンプル同様、まず検索文字の文字位置を取得する必要があります。取得した文字位置をsubstring(0,取得文字位置)で 文字列先頭から指定文字までの文字列を取得します。
6. 文字列の分割
[ サンプルプログラムのソースコード - SubstringSample6.java - ]
|
[ サンプルプログラムの実行結果 ]
分割前の文字列 : 文字列1,String Two,あいう 分割後 1 個目の文字列 -> 文字列1 分割後 2 個目の文字列 -> String Two 分割後 3 個目の文字列 -> あいう |