2010-09-27 4 views
0

Existe-t-il une méthode ou un moyen de lire et de continuer à lire les caractères à partir d'une chaîne, en les plaçant dans une nouvelle chaîne jusqu'à ce qu'il y ait un certain char. Continuez à lire de < à> mais pas plus loin. ThankxJAVA: Lit char de String à un certain char

+0

Avez-vous vraiment besoin de lire ces caractères un à la fois? – Powerlord

+2

De '<' to '>'? N'êtes-vous pas en train de réinventer un analyseur XML/HTML? – BalusC

+0

@BalusC, je pensais la même chose ... –

Répondre

1

Bien sûr. Vous aurez besoin:

  • la méthode String.charAt(int)
  • l'opérateur + (ou la méthode String.concat, ou, si les questions de performance, la classe StringBuilder)
  • la déclaration for
  • et peut-être un if -Déclaration avec une instruction break

Les instructions et l'opérateur s sont expliqués dans le Java Tutorial, et la méthode dans l'API javadoc.

(Et non, je ne fournirai pas une mise en œuvre, puisque vous apprendriez peu en le copiant)

0

Vous pouvez réellement écrire un utilitaire qui fait que

public class StringUtil { 

    public static String copy(String str, char startChar, char endChar) { 
     int startPos = str.indexOf(startChar); 
     int endPos = str.lastIndexOf(endChar); 

     if (endPos < startPos) { 
      throw new RuntimeException("endPos < startPos"); 
     } 

     char[] dest = new char[endPos - startPos + 1]; 
     str.getChars(startPos, endPos, dest, 0); 

     return new String(dest); 
    } 
}; 

PS .. Untested ..


Alternativement, vous pouvez

String result = str.substring(startPos, endPos + 1); //If you want to include the ">" tag. 
+1

Vous m'avez eu jusqu'à la ligne 'char []'. Cette ligne et les suivantes semblent être un énorme travail pour recréer 'String.substring'. – Powerlord

+0

Goodness ... J'ai oublié 'String.substring' (et je jure que je le cherchais) ... –

+0

Et,' lastIndexOf() 'n'est peut-être pas ce dont vous avez besoin. Cela échouera par exemple. 'text text text' et renvoie' text 'au lieu de' '. – BalusC

0

Ceci peut ne pas être ce que vous voulez mais il vous donnera la chaîne désirée.

String desiredString="<Hello>".split("[<>]")[1]; 
Questions connexes