Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java - Using multiple delimiters in a scanner

I'm using a scanner to take input and, hopefully, split it into chunks. I want it to split it up using whole word delimiters. So right now I have:

    Scanner scanner = new Scanner("1 imported bottle of perfume at 27.99");
    scanner.useDelimiter("\\sdelimitOne\\s");

So with input "word word delimitOne word word delimitTwo word word" I get output:

word word
word word delimitTwo word word

I was hoping

    scanner.useDelimiter("\\sdelimitOne\\s\\sdelimitTwo\\s");

might work, but alas not.

How do I go about achieving the following output:

word word
word word
word word

?

like image 674
R.B. Avatar asked Jun 05 '11 17:06

R.B.


People also ask

Can you have multiple delimiters Java?

In order to break String into tokens, you need to create a StringTokenizer object and provide a delimiter for splitting strings into tokens. You can pass multiple delimiters e.g. you can break String into tokens by, and: at the same time. If you don't provide any delimiter then by default it will use white-space.

What is delimiter in Java scanner?

The delimiter() is a method of Java Scanner class which is used to get the Pattern which the Scanner class is currently using to match delimiters.

Can we use multiple scanners in Java?

You can create only one scanner object and use it any where else in this class. Why you need multiple Scanner? You can do with only one..


1 Answers

From wikipedia :

| : The choice (aka alternation or set union) operator matches either the expression before or the expression after the operator. For example, abc|def matches "abc" or "def".

so, scanner.useDelimiter("\\sdelimitOne\\s|\\sdelimitTwo\\s"); is what you need.

like image 92
Rangi Lin Avatar answered Oct 13 '22 00:10

Rangi Lin