2016-05-30 8 views
0

次の文字列があるとします。User 192.168.46.3 connected to this AP私はその中のIPアドレスを<font color='red'>"+192.168.46.3+"</font>に置き換えて色を変えることができます。これを達成する最良の方法は何ですか?文字列のハイライトIPアドレス

答えて

0

これはTim'sの回答に基づいて、完全なコードです:

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); 
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>") 
0

あなたは、文字列内のIPアドレスを検出するために、Pattern.javaMatcher.javaクラスを使用することができます。

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を使用してテキストビューのテキストを設定することができます。

関連する問題