Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Here's a class that will help you:</p> <pre><code>public class Replacer { private final CharSequence mSource; private final CharSequence mReplacement; private final Matcher mMatcher; private int mAppendPosition; private final boolean mIsSpannable; public static CharSequence replace(CharSequence source, String regex, CharSequence replacement) { Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(source); return new Replacer(source, matcher, replacement).doReplace(); } private Replacer(CharSequence source, Matcher matcher, CharSequence replacement) { mSource = source; mReplacement = replacement; mMatcher = matcher; mAppendPosition = 0; mIsSpannable = replacement instanceof Spannable; } private CharSequence doReplace() { SpannableStringBuilder buffer = new SpannableStringBuilder(); while (mMatcher.find()) { appendReplacement(buffer); } return appendTail(buffer); } private void appendReplacement(SpannableStringBuilder buffer) { buffer.append(mSource.subSequence(mAppendPosition, mMatcher.start())); CharSequence replacement = mIsSpannable ? copyCharSequenceWithSpans(mReplacement) : mReplacement; buffer.append(replacement); mAppendPosition = mMatcher.end(); } public SpannableStringBuilder appendTail(SpannableStringBuilder buffer) { buffer.append(mSource.subSequence(mAppendPosition, mSource.length())); return buffer; } // This is a weird way of copying spans, but I don't know any better way. private CharSequence copyCharSequenceWithSpans(CharSequence string) { Parcel parcel = Parcel.obtain(); try { TextUtils.writeToParcel(string, parcel, 0); parcel.setDataPosition(0); return TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(parcel); } finally { parcel.recycle(); } } } </code></pre> <p>And an example of usage:</p> <pre><code>CharSequence modifiedText = Replacer.replace("ABC aaa AB ABC aa ad ABC", "ABC", Html.fromHtml("&lt;font color=\"red\"&gt;CBA&lt;/font&gt;")); textView.setText(modifiedText); </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload