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