2
我想从字符串中替换多个匹配。多重匹配并在SpanableString中替换android
这是我的代码。
SpannableStringBuilder ss = new SpannableStringBuilder(str);
Pattern userNamePattern = Pattern.compile("\\[(.*?)\\]");
Matcher userNameMatcher = userNamePattern.matcher(ss);
while (userNameMatcher.find()) {
final int start = userNameMatcher.start();
final int end = userNameMatcher.end();
ss.setSpan(new ClickableSpan() {
final String clickString = str.substring(start,end);
@Override
public void onClick(View widget) { }
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
}
}, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
ss.replace(start, end, str.substring(start+1,end-1));
}
它取代文字,但不给最好的结果。
例如,如果测试是[A] b [cd] e
那么结果是A b [ccd
我需要的结果是A b cd e
。
我该如何做到这一点我在这里做错了。
由于您正在尝试在此处进行标记,因此您当前的输入和预期输出并不能说明整个故事。在这种情况下,您可能实际上需要包含几个小屏幕捕获来说明发生了什么。 –
什么屏幕捕捉它的完整问题。预期的输出不返回。 – PakDeveloper
请参阅https://pastebin.com/raw/w2Fx2cdq – pskink