2017-06-20 18 views
-1

我不太确定如何对此进行操作,因此标题有点奇怪。我想要做的是在格式为“%1 $ d/10%2 $ s”的字符串中对2个提取的子字符串进行着色和更改大小。 举例来说,第一个参数是'1',第二个参数是'垃圾',最后一个字符串是“1/10垃圾”。我想为'1'红色着色,并将样式设置为粗体,并为“垃圾”红色着色,但保留“/ 10”不变。我知道我可以用Spannables做到这一点,但问题是我看不到一种方式来获取各种子串的开始和结束点。我知道我只能查找第一个'/',并假定它前面的字符是第一个格式替换,然后在'10'后面查找第一个非空格字符,并知道这是第二个格式替换,但是这似乎有点混乱。当然,应该有一些方法来查询字符串的位置已被替换为每个格式参数的字符?在Android中获取被替换的格式字符串子字符串的位置

回答

0

不是我所知道的。

Java中的所有格式方法都会返回一个字符串或一个Formatter(取决于您使用的是什么)。

它看起来很“杂乱”,但不是那么多,正如你所说的,你可能会使用两次变种indexOf(String str, int fromIndex)来获得索引,然后使用spannable着色。所以它可能会有大约4到6行的相关代码。

另一种手动查找索引的方法是使用for循环来查找'/',然后是' '。如果你的字符串总是有这种格式,它会起作用。

也有正则表达式,但它有点矫枉过正!