このページには、以下のサンプルを掲載しています。
下の項目をクリックをすると各サンプルにジャンプします。
※2週間以内の新着記事はNewアイコン、更新記事はUpアイコンが表示されます。
1. 文字列先頭からの部分文字列取り出し
[ サンプルプログラムのソースコード - SubstringSample1.java - ]
- public class SubstringSample1 {
- public static void main(String[] args) {
- String str = "壱234伍67890";
- System.out.println(String.format("取り出し前の文字列 : %s", str));
- System.out.println("文字列先頭から3文字取り出す -> " + str.substring(0,3));
- System.out.println("文字列先頭から7文字取り出す -> " + str.substring(0,7));
- }
- }
|
[ サンプルプログラムの実行結果 ]
取り出し前の文字列 : 壱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 - ]
- public class SubstringSample2 {
- static public void main(String args[]){
- String str = "壱234伍67890";
- System.out.println(String.format("取り出し前の文字列 : %s", str));
- System.out.println("文字列の3文字目から7文字目を取り出す -> " + str.substring(2,7));
- System.out.println("文字列の2文字目から2文字目を取り出す -> " + str.substring(1,2));
- System.out.println("文字列の3文字目から3文字分を取り出す -> " + str.substring(2,2+3));
- }
- }
|
[ サンプルプログラムの実行結果 ]
取り出し前の文字列 : 壱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 - ]
- public class SubstringSample3 {
- static public void main(String args[]){
- String str = "壱234伍67890";
- System.out.println(String.format("取り出し前の文字列 : %s", str));
- System.out.println("文字列の6文字目から最後までを取り出す -> "
- + str.substring(6-1));
- System.out.println("文字列の後ろ3文字分を取り出す -> "
- + str.substring(str.length()-3));
- }
- }
|
[ サンプルプログラムの実行結果 ]
取り出し前の文字列 : 壱234伍67890
文字列の6文字目から最後までを取り出す -> 67890
文字列の後ろ3文字分を取り出す -> 890
|
[ サンプルプログラムの解説 ]
文字列のn文字目から文字列の最後まで取り出したいときは、substring(n-1)とします。
文字列の後ろn文字分を取り出したいときは、substring(stringObject.length()-n)とします。
stringObjectというのは、文字列オブジェクトを表しています。SubstringSample3では、strがこれに該当します。
length()というのは文字列の長さを取得する文字列オブジェクトのメソッドです。
4. 指定した文字より後ろの文字列を取り出す
[ サンプルプログラムのソースコード - SubstringSample4.java - ]
- public class SubstringSample4 {
- public static void main(String[] args) {
- // 指定した文字より後ろの文字取り出し
- String str = "氏名:山田太郎";
- int index = str.indexOf(":");
- System.out.println("取り出し文字列->" + str.substring(index+1));
- // 指定した文字より後ろの文字取り出し
- str = "氏名->山田太郎";
- index = str.indexOf("->");
- index += "->".length();
- System.out.println("取り出し文字列->" + str.substring(index));
- }
- }
|
[ サンプルプログラムの実行結果 ]
取り出し文字列->山田太郎
取り出し文字列->山田太郎
|
[ サンプルプログラムの解説 ]
指定した文字より後ろの文字列を取得するには、指定する文字の文字列中の位置を取得します。
文字列中の指定文字の位置は、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);
}
}
|
注意しなければいけないのは、indexOfメソッドではメソッドの引数で与えた文字、または、文字列が最初に出現する位置の情報を返すと言うことです。
例えば左のサンプルでは、検索対象文字列の中に3つの「:」が含まれています。
この文字列に対してindexOf(":")とした場合、戻り値として3が返ってきます。
indexOfに似たようなメソッドでlastIndexOfと言うメソッドもあります。indexOfメソッドでは、文字列の先頭文字から最後の文字に向かって検索が行われますが
lastIndexOfの場合、引数で渡した文字または文字列を最後の文字から先頭の文字に向かって検索していきます。例えば上の文字列だとlastIndexOf(":")とした場合、
戻り値として7が返ってきます。
また、indexOf、lastIndexOfメソッドは、第2引数に与えた文字位置から検索を開始させることもできます。
左のサンプルの赤字部分が途中位置からの検索指定になります。この場合は、最初の「:」の後ろの文字から
検索を行っています。結果として2番目の「:」の文字位置が表示されています。
サンプルSubstringSample4Aの実行結果は、下のようになります。
indexOf->3
indexOf->5
lasIndexOf->7
5. 指定した文字より前の文字列を取り出す
[ サンプルプログラムのソースコード - SubstringSample5.java - ]
- public class SubstringSample5 {
- public static void main(String[] args) {
- // 検索文字より前の文字列取り出し
- String str = "氏名:山田太郎";
- int index = str.indexOf(":");
- System.out.println("取り出し文字列->" + str.substring(0,index));
- str = "氏名->山田太郎";
- index = str.indexOf("->");
- System.out.println("取り出し文字列->" + str.substring(0,index));
- }
- }
|
[ サンプルプログラムの実行結果 ]
[ サンプルプログラムの解説 ]
指定した文字より前の文字列を取り出すには、
「指定した文字より後ろの文字列を取り出す」
のサンプル同様、まず検索文字の文字位置を取得する必要があります。取得した文字位置をsubstring(0,取得文字位置)で
文字列先頭から指定文字までの文字列を取得します。
6. 文字列の分割
[ サンプルプログラムのソースコード - SubstringSample6.java - ]
- public class SubstringSample6 {
- static public void main(String args[]){
- String str = "文字列1,String Two,あいう";
- String[] strs = str.split(",");
- System.out.println(String.format("分割前の文字列 : %s", str));
- for ( int i = 0; i < strs.length; i++ ){
- System.out.println(String.format("分割後 %d 個目の文字列 -> %s", i+1, strs[i]));
- }
- }
- }
|
[ サンプルプログラムの実行結果 ]
分割前の文字列 : 文字列1,String Two,あいう
分割後 1 個目の文字列 -> 文字列1
分割後 2 個目の文字列 -> String Two
分割後 3 個目の文字列 -> あいう
|
[ サンプルプログラムの解説 ]
文字列の分割にはsplit("区切り文字")を使います。上記の場合区切り文字は","になります。