文字列から特定の記号の中身だけ取り出す
変数に格納した文字列で、特定の記号(')から次の特定の記号(')の中身だけ抽出したい! とき。
だめな例
// 対象の文字列 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引数を与えると、その位置以降から探す。
なるほどね。めもめも...φ(・_・