2012-09-01 3 views
1

J'utilise un extrait de code qui cherche à travers un texte SpannableString pour une expression régulière et supprime le premier et le dernier caractère de toutes les instances de cette expression - dans ce cas, le texte lié par [ crochets].Passer SpannableString à la fonction, retourner SpannableString

La sortie doit être la même SpannableString, mais sans les crochets. par exemple:

input: Text [that] looks [like this] 
output: Text that looks like this 

Cependant, je ne peux pas obtenir le droit de syntaxe pour appeler la fonction et renvoyer le texte au format SpannableString.

est ici l'extrait de code qui effectue la conversion:

public static CharSequence removeSquareBracketsFromText(CharSequence text) { 

    SpannableStringBuilder outputText = new SpannableStringBuilder(text); 

    if(pattern != null) 
    { 
     Matcher matcher = pattern.matcher(text); 
     int matchesSoFar = 0; 
     while(matcher.find()) 
     { 
      int start = matcher.start() - (matchesSoFar * 2); 
      int end = matcher.end() - (matchesSoFar * 2); 
      outputText.setSpan(text, start + 1, end - 1, 0); 
      outputText.delete(start, start + 1); 
      outputText.delete(end - 2, end -1); 
      matchesSoFar++; 
     } 
    } 
    return outputText; 
} 

Et quand je passe la SpannableString dans la fonction, je (tentative de) faire comme ceci:

SpannableString outputText= removeSquareBracketsFromText(inputText); 

I soupçonne que l'erreur est dans la syntaxe de la façon dont j'appelle la fonction, mais je ne sais pas avec certitude. Mon EDI (Eclipse) me dit que l'erreur est dans le mot (removeSquareBracketsFromText ': "Incompatibilité de type: ne peut pas convertir de CharSequence en SpannableString".)

Toute aide appréciée Comme vous pouvez probablement le dire, je suis assez nouveau pour Java et je suis utilisé pour Matlab qui gère la conversion de type variable dans l'arrière-plan

Répondre

0

Modifier déclaration de méthode à ceci:.

public static SpannableString removeSquareBracketsFromText(CharSequence text) { 

Et retour changement statment à ceci:

return new SpannableString(outputText); 
+0

Oh non! Cela a supprimé les [crochets] mais a également perdu tout le formatage que j'avais sur le texte. Cela pourrait-il avoir été causé par le '.toString()'? Pour clarifier, le flux SpannableString I (et devrait sortir) contient des liens URL. – CaptainProg

+0

Oui! C'était. Il semble que l'instruction return ne doit pas inclure le '.toString()'. Ensuite, cela fonctionne parfaitement (j'ai édité votre réponse pour refléter cela) – CaptainProg

+0

Dans ce cas, vous souhaitez prolly garder comme un SpannableStringBuilder. Vous pouvez le faire: textView.setText (ssb); – Solubris

Questions connexes