2016-08-19 3 views
0

Je souhaite ignorer les caractères spéciaux tels que , " ; : en utilisant le marqueur de chaîne. Par exemple, si j'entrez:Ignorer les caractères spéciaux sur StringTokenizer java

He said, "That's not a good idea." 

sortie doit être:

He 
Said 
that 
s 
not 
a 
good 
idea 

Ceci est mon code actuel

class Q_03 
{ 
    public static void main(String[] argv) 
    { 
     System.out.print("Enter text to break :- "); 
     Scanner sc = new Scanner(System.in); 
     String x = sc.nextLine(); 
     StringTokenizer url = new StringTokenizer(x, " ");    

     while(url.hasMoreTokens()) 
     { 
      System.out.println(url.nextToken()); 
     } 
    } 
} 
+0

Considérons ['String # split'] (https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#split-java.lang.String-) avec le nom approprié regex. – bradimus

Répondre

0

Vous pouvez remplacer que des caractères spéciaux avec regex comme ceci:

class Q_03 { 
    public static void main(String[] argv) { 
     System.out.print("Enter text to break :- "); 
     Scanner sc = new Scanner(System.in); 
     String x = sc.nextLine().replaceAll("[|;:,'\"]", " "); 
     StringTokenizer url = new StringTokenizer(x, " "); 

     while (url.hasMoreTokens()) { 
      System.out.println(url.nextToken()); 
     } 
    } 
} 

Vous pouvez ajouter à cette expression rationnelle "[;:,'\"]" quels symboles vous voulez, mais certains symboles spéciaux (comme ") doivent avoir été échappés avec la barre oblique inverse \".

+0

cela a fonctionné merci. mais quand je mets des caractères comme | cela donne une erreur de compilation. – nascar895

+0

Cela fonctionne avec '|', je l'ai testé. J'ai mis à jour ma réponse. – DimaSan