2016-09-27 91 views
0

我从服务器获取一个字符串并想要分割它,使用SpannableStringBuilder设置不同的颜色。一次性使用不同分隔符的分割字符串

例如,我越来越喜欢字符串:

" Hi Mr Xyz, Please visit [Paris::FRANCE] and [Rome::ITALY] once." 

,我想不同的颜色设置为巴黎罗马。我可以拆分巴黎和罗马分开使用:

Pattern pattern = Pattern.compile("\\[([^\\]]+)]"); 
Matcher matcher = pattern.matcher(wholeString); 
while (matcher.find()) 
{ 
    System.out.println(matcher.group(1)); 
} 

但如何拆分主字符串?

+1

也许你可以使用['的replaceAll( “\\([^ \\]:] +)::([^ \\] *)]” ,“ $ 1”)'](https://regex101.com/r/aG4tO9/1)? :)另外一个选择是使用'appendReplacement'这个正则表达式来使用'Paris'和'Rome'来搜索相应的颜色代码。 –

+0

只需从原始的字符串中减去找到的字符串? – David

+0

但我想为巴黎和罗马设置不同的颜色 – Akshay

回答

0

尝试这样的:

String wholeString = " Hi Mr Xyz, Please visit [Paris::FRANCE] and [Rome::ITALY] once."; 
      Pattern pattern = Pattern.compile("\\[([^\\]]+)]"); 
      Matcher matcher = pattern.matcher(wholeString); 
      while (matcher.find()) 
      { 
       for (int i = 0; i < matcher.group(1).split("::").length; i++) { 
        System.out.println(matcher.group(1).split("::")[i]); 
       } 
      }