I want the scanner to ignore three things: empty spaces, "/"
and "!"
.
What is the correct argument to use in the useDelimiter
method?
Asked
Active
Viewed 1,089 times
2

Mureinik
- 297,002
- 52
- 306
- 350
2 Answers
1
Scanner's delimiter is just a pattern, so you could use the following:
sc.useDelimiter("[\\s/!]*");

Mureinik
- 297,002
- 52
- 306
- 350
-
1Why are you using `#`? – OneCricketeer Aug 14 '17 at 13:59
-
1i want to give the scanner something like "Anna Mills/Female/18" and then use System.out.println(scan.next()) to get each word on separate lines. so the scanner should ignore both empty space and " / " sign. i used your suggested code and it doesn't do that... – Aug 14 '17 at 14:02
-
For some reason I had in my mind that OP was using `#` as a possible delimiter. Meant to use `/` - edited and fixed. – Mureinik Aug 14 '17 at 14:40
1
useDelimiter
takes a regex argument docs:
pattern
- A string specifying a delimiting pattern
So just make sure the string is in regex form.
Whitespace in regex is \s
, escape that to become \\s
. /
is still /
and !
is still !
. You then use |
to act as an "or" operator to say "either one of these".
Here's how to do it:
scanner.useDelimiter("\\s|/|!");
If you want to say that "consecutive whitespaces slashes and exclamation marks also count as delimiter", then you can add a quantifier +
to the whole thing:
scanner.useDelimiter("(\\s|/|!)+");

Sweeper
- 213,210
- 22
- 193
- 313