私は例えばIPアドレスの連結によって形成された文字列を、持っている:新しい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"
で始まる場合たとえば、"127.27.123.23"
場合は、指定された私が見つける必要があるI 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);
はそれができる次のコードは、より効率的に持っていますか?または正規表現を使用できますか?どれが効率的ですか?
あなたは' 127.255.1.43'のような文字列が一致しますか? (私はあなたの質問のように '127.272.1.43'よりももっと賢明な例を選択しました)... –
@TimPietzckerすみません、誰かが編集して、27の後に続くドットを削除しました..私はそれを後で追加しました –