扫描程序在java中的分隔符和正则表达式

时间:2012-02-17 08:42:41

标签: java regex delimiter

我正在尝试逐字阅读输入,但无法弄清楚如何将扫描仪的分隔符设置为空格和标点符号,除了'(单引号)。 这就是我得到的

BufferedReader input;
String line;
Scanner sc;
String word;
try  {
    input = new BufferedReader(new FileReader(path));
    while (input.ready()) {
        line = input.readLine();
        System.out.println("Current Line: " + line);
        sc  = new Scanner(line);
        sc.useDelimiter("\\W\\s^\'");
        //...
    }
}
//...  

2 个答案:

答案 0 :(得分:2)

我认为你的意思是?

sc.useDelimiter("\\W\\s^\'");

我会用

sc.useDelimiter("[^\\w']+");

String line= "Hello, world!\n 'Computer\n \n Science'\n Hell\n";
System.out.println(Arrays.toString(line.split("[^\\w']+")));

打印

[Hello, world, 'Computer, Science', Hell]

String line= "Hello, world!\n 'Computer\n \n Science'\n Hell\n";
Scanner scan = new Scanner(line);
scan.useDelimiter("[^\\w']+");
while(scan.hasNext())
    System.out.print("|"+scan.next());
System.out.println("|");

打印

|Hello|world|'Computer|Science'|Hell|

答案 1 :(得分:1)

你也可以像这样使用Tokenizer:

StringTokenizer st1 = new StringTokenizer("a|b|c");

while(st1.hasMoreTokens())
  System.out.println(st1.nextToken());

希望这可以帮助你。