From 5b46e18733cd1df23c11292caac0a5609ef2f782 Mon Sep 17 00:00:00 2001 From: "alexandru.borza" Date: Mon, 6 Feb 2023 23:24:32 +0200 Subject: [PATCH] BAEL-6195 --- .../FirstOccurrenceOfAnInteger.java | 16 +++++++ .../FirstOccurrenceOfAnIntegerTests.java | 47 +++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 core-java-modules/core-java-regex-2/src/main/java/com/baeldung/firstoccurrenceofaninteger/FirstOccurrenceOfAnInteger.java create mode 100644 core-java-modules/core-java-regex-2/src/test/java/com/baeldung/firstoccurrenceofaninteger/FirstOccurrenceOfAnIntegerTests.java diff --git a/core-java-modules/core-java-regex-2/src/main/java/com/baeldung/firstoccurrenceofaninteger/FirstOccurrenceOfAnInteger.java b/core-java-modules/core-java-regex-2/src/main/java/com/baeldung/firstoccurrenceofaninteger/FirstOccurrenceOfAnInteger.java new file mode 100644 index 0000000000..a8fde1dc16 --- /dev/null +++ b/core-java-modules/core-java-regex-2/src/main/java/com/baeldung/firstoccurrenceofaninteger/FirstOccurrenceOfAnInteger.java @@ -0,0 +1,16 @@ +package com.baeldung.firstoccurrenceofaninteger; + +public class FirstOccurrenceOfAnInteger { + + public static Integer findFirstInteger(String s) { + int i = 0; + while (i < s.length() && !Character.isDigit(s.charAt(i))) { + i++; + } + int j = i; + while (j < s.length() && Character.isDigit(s.charAt(j))) { + j++; + } + return Integer.parseInt(s.substring(i, j)); + } +} diff --git a/core-java-modules/core-java-regex-2/src/test/java/com/baeldung/firstoccurrenceofaninteger/FirstOccurrenceOfAnIntegerTests.java b/core-java-modules/core-java-regex-2/src/test/java/com/baeldung/firstoccurrenceofaninteger/FirstOccurrenceOfAnIntegerTests.java new file mode 100644 index 0000000000..54779bab9a --- /dev/null +++ b/core-java-modules/core-java-regex-2/src/test/java/com/baeldung/firstoccurrenceofaninteger/FirstOccurrenceOfAnIntegerTests.java @@ -0,0 +1,47 @@ +package com.baeldung.firstoccurrenceofaninteger; + +import java.util.Arrays; +import java.util.List; +import java.util.Scanner; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.Assertions; + + +class FirstOccurrenceOfAnIntegerTests { + + @Test + public void whenUsingPatternMatcher_findFirstInteger() { + String s = "ba31dung123"; + Matcher matcher = Pattern.compile("\\d+").matcher(s); + matcher.find(); + int i = Integer.parseInt(matcher.group()); + Assertions.assertEquals(31, i); + } + + @Test + public void whenUsingScanner_findFirstInteger() { + int i = new Scanner("ba31dung123").useDelimiter("\\D+").nextInt(); + Assertions.assertEquals(31, i); + } + + @Test + public void whenUsingSplit_findFirstInteger() { + String str = "ba31dung123"; + List tokens = Arrays.stream(str.split("\\D+")) + .filter(s -> s.length() > 0).collect(Collectors.toList()); + Assertions.assertEquals(31, Integer.parseInt(tokens.get(0))); + } + + @Test + public void whenUsingCustomFunction_findFirstInteger() { + String str = "ba31dung123"; + Integer i = FirstOccurrenceOfAnInteger.findFirstInteger(str); + Assertions.assertEquals(31, i); + } + + +}