Ich versuche rekursive Methode zu verwenden, um Tags auf Zeichenfolge zu finden, entfernen Sie es und färben Sie dann gefundenen Text (e). aber mein code konnte nicht die richtige string als entfernt alle tags mit der richtigen position nach entfernen tags von string für colorize sieAndroid rekursive Methode zum Suchen und Einfärben gefundener Texte
meine rekursive methode funktionieren gut, aber nach der rückkehr string ich habe problem, ich habe string mit letzten etiketten! !
String str = "11111111<mft:A>2222222</mft:A>1111111<mft:S>33333333</mft:S> <mft:A>99999</mft:A><mft:S>v44444444/mft:S><mft:R>555555</mft:R><mft:S>6666666</mft:S><mft:A>7777777</mft:A>111111";
String nonTags = extractAyehTags(str);
//result is: 1111111122222221111111<mft:S>33333333</mft:S> <mft:A>99999</mft:A><mft:S>v44444444/mft:S><mft:R>555555</mft:R><mft:S>6666666</mft:S><mft:A>7777777</mft:A>111111
Spannable WordToSpan = new SpannableStringBuilder(nonTags);
for (int p = 0; p < ayeHaPositions.size(); p++) {
WordToSpan.setSpan(new ForegroundColorSpan(Color.BLUE), ayeHaPositions.get(p).getStart(), ayeHaPositions.get(p).getEnd(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
welcome_message.setText(WordToSpan);
meine rekursive Methode für Tag entfernen und Textpositionen gefunden zu
private String extractAyehTags(String str) {
String nonTags = str;
Pattern mftA_REGEX = Pattern.compile("<mft:A>(.+?)</mft:A>");
Matcher matcher = mftA_REGEX.matcher(str);
if (matcher.find()) {
String found = matcher.group(1);
int start = str.indexOf(found.trim());
ayeHaPositions.add(new AyehaTagsInformation(start - ("<mft:A>".length()), (start + found.length()) - ("</mft:A>".length()), found));
nonTags = str.replace("<mft:A>" + matcher.group(1) + "</mft:A>", matcher.group(1));
extractAyehTags(nonTags);
}
return nonTags;
}