2016-08-19 65 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