【发布时间】:2021-02-21 00:47:33
【问题描述】:
我正在尝试用跨度替换某个字符串。
例如我有这个字符串:
String s = "redHello greenWorld";
我想将“红色”替换为:
modifiedText.setSpan(new ForegroundColorSpan(Color.parseColor("#FF0000")), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
和“绿色”:
modifiedText.setSpan(new ForegroundColorSpan(Color.parseColor("#00FF00")), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
所以我用这种方式创建了 modifiedText:
Spannable modifiedText = new SpannableString(s);
如何用没有 HTML 的 Span 替换某个字符串?
【问题讨论】:
-
您的问题中似乎有执行此操作的代码。要应用跨度,请致电
setSpan()。如果您的问题是“我如何找到start和end的值?”,您可以使用indexOf()之类的方法找到start,然后根据start和长度计算end您正在寻找的子字符串。 -
@CommonsWare 这永远行不通,因为我想替换而不仅仅是找到,所以“红色”和“绿色”这两个词不会被删除......
-
由于 SpannableString 是不可变的,您可以编写一个返回新字符串的函数(遍历字符串,如果您发现“红色”或“绿色”,则将跨度设置为输出)(我希望我理解你的问题正确)
-
@KH241 这就是问题所在:如何将不是字符串的内容附加到字符串?
-
但是你不能只计算位置,去掉“红色”和“绿色”然后设置跨度吗?
标签: java android android-spannable