突出显示字符串中的IP地址

时间:2016-05-30 19:22:54

标签: java android string

假设我有以下字符串User 192.168.46.3 connected to this AP。我想用<font color='red'>"+192.168.46.3+"</font>替换那里的IP地址,以便我可以改变它的颜色。实现这一目标的最佳方法是什么?

3 个答案:

答案 0 :(得分:1)

如果你不太关心验证IP,那么一个简单的正则表达式可以解决这个问题。

抓住java.util.regex.Pattern和.Matcher并使用类似

的内容
([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})

替换您要替换的组。

像这样:

final Pattern p = new Pattern("([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3})")
final Matcher m = p.match("User 192.168.46.3 connected to this AP")
final String s = m.replaceAll("<font color='red'>$1</font>")

答案 1 :(得分:0)

这是基于蒂姆回答的完整代码:

String input = "User 192.168.46.3 connected to this AP";
String regex = "([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})";
String output = input.replaceAll(regex, "<font color='red'>$0</font>");
System.out.println(output);

答案 2 :(得分:0)

您可以使用Pattern.javaMatcher.java类来检测字符串中的IP地址。

看一下Pattern.java文档,有关如何正确使用它们的例子。 然后,您可以遍历匹配器结果并将ForegroundColorSpan应用于每个结果。

SpannableString spannable = new SpannableString(YOUR_STRING_CONTAINING_AN_IP_ADDRESS);
Pattern p = Pattern.compile(YOUR_REGEX);
Matcher m = p.matcher(YOUR_STRING_CONTAINING_AN_IP_ADDRESS);
while(m.find()) {
     spannable.setSpan(new ForegroundColorSpan(COLOR_YOUR_WANT), m.start(), m.end()-1, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
}

然后您可以使用spannable来设置文本视图的文本。