我不太清楚怎么说这个,所以标题有点奇怪。我想要做的是在一个字符串中着色并更改2个替代子串的大小,格式为"%1 $ d / 10%2 $ s"。 所以说例如第一个参数是' 1'第二个论点是'垃圾'最后的字符串将是" 1/10垃圾"。我想为' 1'红色并将风格设置为粗体,并为“垃圾”添加颜色。红色,但离开' / 10'不变。我知道我可以用Spannables做到这一点,但问题是我无法找到获得各种子串的起点和终点的方法。我知道我可以找到第一个' /'并假设它之前的字符是第一个格式替换,然后查找' 10'之后的第一个非空格字符。并且知道这是第二种格式替换,但这看起来有点混乱。当然应该有一些方法来查询字符串中已替换每个格式参数的字符的位置?
答案 0 :(得分:0)
不是我知道的。
Java中的所有格式方法都返回一个字符串或一个Formatter(取决于你正在使用的内容)。
看起来“混乱”但不是那么多,正如你所说,你可能会使用indexOf(String str, int fromIndex)的变体两次来获取索引,然后使用spannable进行着色。所以它可能会有大约4到6行相关代码。
手动查找索引的另一种方法是使用for循环查找'/'
,然后查找' '
。如果您的字符串始终具有此格式,则可以使用。
还有正则表达式,但它有点矫枉过正!