blog

日常・技術のことを記録する

文字列から特定の記号の中身だけ取り出す

変数に格納した文字列で、特定の記号(')から次の特定の記号(')の中身だけ抽出したい! とき。

だめな例
// 対象の文字列
String targetStr = "testip='192.168.1.101'wheretestname='testname'"

// '192.168.1.101'だけ取得したい(記号含まず)
ipAddr = targetStr.substring(targetStr.indexOf("'") + 1, targetStr.lastIndexOf("'")).trim();
System.out.println(ipAddr);

// console
// 理想)192.168.1.101
// 実際)192.168.1.101'wheretestname='testname

だめだった... 最初の記号と最後の記号を取得しちゃってるのね。

解決策
// 対象の文字列
String targetStr = "testip='192.168.1.101'wheretestname='testname'"

// '192.168.1.101'だけ取得したい(記号含まず)
int start = targerStr.indexOf("'") + 1;
int end = targerStr.indexOf("'", start);
ipAddr = targetStr.substring(start, end).trim();
System.out.println(ipAddr);

// console
// 理想)192.168.1.101
// 実際)192.168.1.101'wheretestname='testname

で、できたー! 'で挟まれた文字列、つまり1つ目の'と、その次の'の位置が必要だから、その位置をindexOf()で探す。 indexOfに第2引数を与えると、その位置以降から探す。

なるほどね。めもめも...φ(・_・