假设我有以下字符串User 192.168.46.3 connected to this AP
。我想用<font color='red'>"+192.168.46.3+"</font>
替换那里的IP地址,以便我可以改变它的颜色。实现这一目标的最佳方法是什么?
答案 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.java和Matcher.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来设置文本视图的文本。