From 35344d1dbf40362b653789c260ffd4f929925989 Mon Sep 17 00:00:00 2001 From: artem Date: Fri, 17 Nov 2023 16:27:46 +0000 Subject: [PATCH] Added method readFromFile --- src/main/java/core/basesyntax/FileWork.java | 36 +++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/src/main/java/core/basesyntax/FileWork.java b/src/main/java/core/basesyntax/FileWork.java index ba2d8396..7da5ef37 100644 --- a/src/main/java/core/basesyntax/FileWork.java +++ b/src/main/java/core/basesyntax/FileWork.java @@ -1,8 +1,40 @@ package core.basesyntax; +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.regex.Pattern; + public class FileWork { + private static final String SPECIFIED_CHARACTER = "w"; + private static final String REGEX = "[^A-Za-z0-9 ]+"; + public String[] readFromFile(String fileName) { - //write your code here - return null; + List strings = new ArrayList<>(); + try (BufferedReader bufferedReader = new BufferedReader(new FileReader(fileName))) { + String line; + while ((line = bufferedReader.readLine()) != null) { + String result = Pattern.compile(REGEX,Pattern.CASE_INSENSITIVE).matcher(line) + .replaceAll("").toLowerCase(); + String[] words = result.split(" "); + for (String word : words) { + if (word.startsWith(SPECIFIED_CHARACTER)) { + strings.add(word); + } + } + + } + } catch (IOException e) { + throw new RuntimeException(e); + } + String[] filteredWords = new String[strings.size()]; + strings.toArray(filteredWords); + Arrays.sort(filteredWords); + + return filteredWords; } } +