这是我的代码。
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。
我该如何做到这一点我在这里做错了。
+0
由于您正在尝试在此处进行标记,因此您当前的输入和预期输出并不能说明整个故事。在这种情况下,您可能实际上需要包含几个小屏幕捕获来说明发生了什么。 –
+0
什么屏幕捕捉它的完整问题。预期的输出不返回。 –
+0
请参阅https://pastebin.com/raw/w2Fx2cdq –