2016-08-19 7 views
0

Я хочу игнорировать специальные символы, такие как , " ; :, используя строковый токенизатор. Например, если ввести:Игнорировать специальные символы в StringTokenizer java

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

вывод должен быть:

He 
Said 
that 
s 
not 
a 
good 
idea 

Это мой текущий код

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

Рассмотрите ['String # split'] (https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#split-java.lang.String-) с соответствующим регулярное выражение. – bradimus

ответ

0

Вы можете заменить, что специальные символы с regex как это:

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()); 
     } 
    } 
} 

Вы можете добавить к этому регулярному выражению "[;:,'\"]" любые символы, которые вы хотите, но некоторые специальные символы (например, ") должны были сбрасываться с помощью обратной косой черты \".

+0

это сработало спасибо. но когда я помещаю символы как | он дает ошибку компиляции. – nascar895

+0

Он работает с '' ', я тестировал его. Я обновил свой ответ. – DimaSan