Использование символа звездочки в качестве разделителя сканера Java - PullRequest
2 голосов
/ 13 января 2011

Привет всем, Этот вопрос кажется мне действительно глупым, но я нигде не могу найти ответ нигде. Все, что я пытаюсь сделать, это сканировать строку, разделенную звездочкой (*). Однако, когда я пытаюсь использовать foo.useDelimiter ("*") ;, Java интерпретирует звездочку как подстановочный знак и использует КАЖДЫЙ символ в качестве разделителя ... Это, очевидно, не то, что я хочу. Я попытался использовать обратную косую черту в качестве escape-символа, но это дает мне ошибку компилятора «недопустимый escape-символ».

Это, вероятно, очень просто, но, опять же, я понятия не имею, где найти ответ!

Большое спасибо!

Linus

Ответы [ 3 ]

6 голосов
/ 13 января 2011

В строке Java вы хотите использовать двойную обратную косую черту \\, поэтому фактическая строка, которая будет интерпретироваться, будет \ *, таким образом, экранируя *.

По сути, вам нужно сбежать от побега.

4 голосов
/ 13 января 2011

Поскольку Scanner использует тот же класс Pattern, что и другие операции регулярного выражения, две обратные косые черты должны помочь.

(Одна обратная косая черта экранирует только следующий символ в строковой константе, вам нужно два из них, чтобы получить один вфактическая строка.)

2 голосов
/ 13 января 2011

Другая альтернатива:

Scanner in = ...;
in.useDelimiter("[*]");

Все, что в скобках - это символы, которые вы хотите использовать в качестве разделителей.

...