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