Java:文字列から最後の特定の文字の手前までを取得する

こんにちは、さるまりんです。

小ネタです。

文字列の中から最後のブロックを取り外して取得するというのをやってました。

なんのことかわからないかなと思いますので例をあげます。

文字列

black,white,red,blue,yellow,green,brown,orange,purple,pink,grey

から、最後の,(カンマ)の手前までの文字列を取り出して、結果

black,white,red,blue,yellow,green,brown,orange,purple,pink

にします。

これをするには

1. 最後のカンマの位置を取得する

2. 元の文字列の最初からカンマの手前までを切り出す

とします。

Javaのコードでは次のようになります。

// 元の文字列
String colors = "black,white,red,blue,yellow,green,brown,orange,purple,pink,grey";
// 最後の,のindexを取得	
int lastIdx = colors.lastIndexOf(',');
// indexの手前までをsubstring()で切り出し
String shortColors = lastIdx < 0 ? colors : colors.substring(0,lastIdx);

これで変数shortColorsにはblack,white,...,pinkの文字列が格納されています。

lastIdx < 0としているのは、文字列の中にカンマが一つも含まれていない時、substringでエラーとなってしまうためです。

ちなみに、最後の一つ(例でいうとgrey)を切り出すのは

String lastColor = lastIdx < 0 ? colors : colors.substring(lastIdx+1);

です。

結構シンプルにできました。もっとスマートなやり方があるかもしれないですね。

読んでくださってありがとうございました。

それではまた!