【发布时间】:2012-04-17 04:42:43
【问题描述】:
我有一个由 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);
可以更高效吗?或者我可以使用正则表达式吗?哪个效率更高?
【问题讨论】:
-
在查找
127.25时,是否要匹配127.255.1.43之类的字符串? (我选择了一个比你的问题中的127.272.1.43更理智的例子)...... -
@TimPietzcker 抱歉有人编辑并删除了 27 之后的点。我已将其添加回来
标签: regex string ip-address apache-stringutils