Разделитель сканера и регулярное выражение в Java - PullRequest
2 голосов
/ 17 февраля 2012

Я пытаюсь читать вводимые слова за словом, но не могу понять, как установить разделитель сканера на пробел и знаки препинания, кроме '(одинарная кавычка). Вот что я получил

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 ]

2 голосов
/ 17 февраля 2012

Полагаю, вы имеете в виду?

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 голос
/ 17 февраля 2012

Вы также можете использовать токенизатор так:

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

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

Надеюсь, что это поможет вам в вашем деле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...