分隔文本与分隔符+ int在0-9之间

时间:2013-08-28 08:21:28

标签: java android string colors split

我必须编写一个显示用户输入字符串的函数,在textview中使用颜色。

例如:^1Hi ^2 everyone

  • “Hi”=红色,因为
  • 之前有“^ 1”
  • “Everyone”=绿色,因为之前有“^ 2”。

所以我认为我必须使用这样的分割函数:

String txt = myEditText.getText().toString();
String[] splits = txt.split("\\^(\\d+)");

但我不知道如何在“^”之后输入数字。

然后我想指定一个带有数字类型的颜色。

我认为我可以使用:

MyTextView.setText(HTML.fromHtml(myTextModifiedWithColor);

所以,如果您有任何想法,我们将非常感激。

2 个答案:

答案 0 :(得分:0)

我建议您仅在^上拆分,原因很简单:您的数组将填充由^终止并以数字开头的字符串。

现在,您只需删除最后一个字符^即可轻松处理所有字符串,因为您不想显示该字符。此外,您想要读取每个字符串的第一个字符,并相应地调整颜色。不要忘记删除该字符。

要修剪字符串,我建议使用substring()。要应用颜色,我建议使用switch语句。

另外,不要忘记你的第一个字符串可能是无用的,或者不是以数字开头。无论如何,请务必检查所有字符串的一致性。我还强烈建议您使用另一种应用标记的方式。如果您真的想要花哨,可以使用replace()方法使用更复杂的RegEx来将标记替换为正确的HTML标记,然后通过使用将其可视化myTextView.setText(Html.fromHtml(yourString));

答案 1 :(得分:0)

试试这段代码,

  Pattern p = Pattern.compile("^(.*):([\\d\\.]+)/(\\d+)$");
Matcher m = p.matcher( someString );
if (m.find()) {
  m.group(1); // returns the text before the colon
  m.group(2); // returns the double between the colon and the slash
  m.group(3); // returns the integer after the slash
}