IP アドレスの連結によって形成される文字列があります。たとえば、次のようになります。
"127.272.1.43;27.27.1.43;127.127.27.67;128.27.1.43;127.20.1.43;111.27.1.43;127.27.1.43;"
新しい IP アドレスが与えられたら、IP の前半が IP アドレス文字列の一部であるかどうかを確認する必要があります。たとえば、"127.27.123.23"
が与えられた場合、文字列内の IP アドレスのいずれかが次で始まるかどうかを調べる必要があります。"127.27"
次のコードがあります。ここでuserIP
="127.27."
int i = StringUtils.indexOf(dbIPString, userIP);
do {
if (i > 0) {
char ch = dbIPString.charAt(i - 1);
if (ch == ';') {
System.out.println("IP is present in db");
break;
} else {
i = StringUtils.indexOf(dbIPString, userIP, i);
}
} else if (i == 0) {
System.out.println("IP is present in db");
break;
} else {
System.out.println("IP is not present in db");
}
} while (i >= 0);
もっと効率的にできますか?または、正規表現を使用できますか? どちらがより効率的ですか?