Skip to content

Commit 8fc9716

Browse files
thibaultfaurethibault.faure
authored andcommitted
BAEL-5383 code for the use delimiters article
1 parent 1ce8895 commit 8fc9716

File tree

2 files changed

+103
-0
lines changed

2 files changed

+103
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.baeldung.java9.delimiters;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
import java.util.Scanner;
6+
import java.util.regex.Pattern;
7+
8+
public class DelimiterDemo {
9+
10+
public static List<String> scannerWithDelimiter(String input, String delimiter) {
11+
try (Scanner scan = new Scanner(input)) {
12+
scan.useDelimiter(delimiter);
13+
List<String> result = new ArrayList<String>();
14+
scan.forEachRemaining(result::add);
15+
return result;
16+
}
17+
}
18+
19+
public static List<String> scannerWithDelimiterUsingPattern(String input, Pattern delimiter) {
20+
try (Scanner scan = new Scanner(input)) {
21+
scan.useDelimiter(delimiter);
22+
List<String> result = new ArrayList<String>();
23+
scan.forEachRemaining(result::add);
24+
return result;
25+
}
26+
}
27+
28+
public static List<String> baseScanner(String input) {
29+
try (Scanner scan = new Scanner(input)) {
30+
List<String> result = new ArrayList<String>();
31+
scan.forEachRemaining(result::add);
32+
return result;
33+
}
34+
}
35+
36+
}
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package com.baeldung.java9.delimiters;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
5+
import java.util.Arrays;
6+
import java.util.List;
7+
import java.util.function.BiFunction;
8+
import java.util.regex.Pattern;
9+
10+
import org.junit.jupiter.api.Test;
11+
12+
class DelimiterDemoUnitTest {
13+
14+
@Test
15+
void givenSimpleCharacterDelimiter_whenScannerWithDelimiter_ThenInputIsCorrectlyParsed() {
16+
checkOutput(DelimiterDemo::scannerWithDelimiter, "Welcome to Baeldung", "\\s", Arrays.asList("Welcome", "to", "Baeldung"));
17+
}
18+
19+
@Test
20+
void givenStringDelimiter_whenScannerWithDelimiter_ThenInputIsCorrectlyParsed() {
21+
checkOutput(DelimiterDemo::scannerWithDelimiter, "HelloBaeldungHelloWorld", "Hello", Arrays.asList("Baeldung", "World"));
22+
}
23+
24+
@Test
25+
void givenVariousPossibleDelimiters_whenScannerWithDelimiter_ThenInputIsCorrectlyParsed() {
26+
checkOutput(DelimiterDemo::scannerWithDelimiter, "Welcome to Baeldung.\nThank you for reading.\nThe team", "\n|\\s", Arrays.asList("Welcome", "to", "Baeldung.", "Thank", "you", "for", "reading.", "The", "team"));
27+
}
28+
29+
@Test
30+
void givenWildcardRegexDelimiter_whenScannerWithDelimiter_ThenInputIsCorrectlyParsed() {
31+
checkOutput(DelimiterDemo::scannerWithDelimiter, "1aaaaaaa2aa3aaa4", "a+", Arrays.asList("1", "2", "3", "4"));
32+
}
33+
34+
@Test
35+
void givenSimpleCharacterDelimiter_whenScannerWithDelimiterUsingPattern_ThenInputIsCorrectlyParsed() {
36+
checkOutput(DelimiterDemo::scannerWithDelimiterUsingPattern, "Welcome to Baeldung", Pattern.compile("\\s"), Arrays.asList("Welcome", "to", "Baeldung"));
37+
}
38+
39+
@Test
40+
void givenStringDelimiter_whenScannerWithDelimiterUsingPattern_ThenInputIsCorrectlyParsed() {
41+
checkOutput(DelimiterDemo::scannerWithDelimiterUsingPattern, "HelloBaeldungHelloWorld", Pattern.compile("Hello"), Arrays.asList("Baeldung", "World"));
42+
}
43+
44+
@Test
45+
void givenVariousPossibleDelimiters_whenScannerWithDelimiterUsingPattern_ThenInputIsCorrectlyParsed() {
46+
checkOutput(DelimiterDemo::scannerWithDelimiterUsingPattern, "Welcome to Baeldung.\nThank you for reading.\nThe team", Pattern.compile("\n|\\s"), Arrays.asList("Welcome", "to", "Baeldung.", "Thank", "you", "for", "reading.", "The", "team"));
47+
}
48+
49+
@Test
50+
void givenWildcardRegexDelimiters_whenScannerWithDelimiterUsingPattern_ThenInputIsCorrectlyParsed() {
51+
checkOutput(DelimiterDemo::scannerWithDelimiterUsingPattern, "1aaaaaaa2aa3aaa4", Pattern.compile("a*"), Arrays.asList("1", "2", "3", "4"));
52+
}
53+
54+
void checkOutput(BiFunction<String, String, List<String>> function, String input, String delimiter, List<String> expectedOutput) {
55+
assertEquals(expectedOutput, function.apply(input, delimiter));
56+
}
57+
58+
void checkOutput(BiFunction<String, Pattern, List<String>> function, String input, Pattern delimiter, List<String> expectedOutput) {
59+
assertEquals(expectedOutput, function.apply(input, delimiter));
60+
}
61+
62+
@Test
63+
void whenBaseScanner_ThenWhitespacesAreUsedAsDelimiters() {
64+
assertEquals(List.of("Welcome", "at", "Baeldung"), DelimiterDemo.baseScanner("Welcome at Baeldung"));
65+
}
66+
67+
}

0 commit comments

Comments
 (0)