Javaの文字列切り出しは、Stringクラスのsubstringで行います。
ところが、substringメソッドは次の2つしか用意されていません(; ・`д・´)
- String#substring(int) : 指定した位置以降の文字列を切り出す
- String#substring(int,int) : 指定した位置から指定した位置の間で文字列を切り出す
よって、Stringクラスでは、VBAのLEFT,MIDっぽいことはできるのですが、RIGHTに相当するメソッドはありません。
せっかくなので、LEFT,MID,RIGHTっぽいメソッドを作ってみます。
つまらないものですが、こういうものでもライブラリにして取っておくだけで、けっこう便利になります(^^♪
VBAのLEFT,MID,RIGHTっぽいメソッドを作るサンプル
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | public class SubstringTest { public static void main(String[] args) { String str = "1234567890"; System.out.println(str + " -> LEFT -> " + left(str,3)); System.out.println(str + " -> MID -> " + mid(str,3,3)); System.out.println(str + " -> RIGHT -> " + right(str,3)); str = "1234567890"; System.out.println(str + " -> LEFT -> " + left(str,3)); System.out.println(str + " -> MID -> " + mid(str,3,3)); System.out.println(str + " -> RIGHT -> " + right(str,3)); } public static String left(String str,int len) { if(isEmptyOrShort(str,len)) { return str; } return str.substring(0,len); } public static String mid(String str,int beginIndex,int len) { if(isEmptyOrShort(str,len)) { return str; } return str.substring(beginIndex,(beginIndex + len)); } public static String right(String str,int len) { if(isEmptyOrShort(str,len)) { return str; } return str.substring((str.length() - len)); } private static boolean isEmptyOrShort(String str,int len) { if(str == null || str.length() < len) { return true; } return false; } } |
実行結果
1 2 3 4 5 6 | 1234567890 -> LEFT -> 123 1234567890 -> MID -> 456 1234567890 -> RIGHT -> 890 1234567890 -> LEFT -> 123 1234567890 -> MID -> 456 1234567890 -> RIGHT -> 890 |
サンプルの解説
leftメソッド,midメソッドは、substringそのままですので、とくにありませんw
rightメソッドは、文字列の長さを取って、後ろから開始位置を求めています。
また、指定された長さより、切り出したい文字列が短いか、nullの場合は、そのまま返すようにしています。