Java. Java. Помогите написать программу считывающую из фала с текстом данные в массив строк, а затем убрать все знаки препинания

Помогите написать программу считывающую из фала с текстом данные в массив строк, а затем убрать все знаки препинания.


    package com.company;

import java.io.*;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class Main {
    private static final Set<Character> PUNCT_SET = new HashSet<>(Arrays.asList(
            '!', '"', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',', '-',
            '.', '/', ':', ';', '<', '=', '>', '?', '@', '[', '\\', ']', '^',
            '_', '`', '{', '|', '}', '~'
    ));

    public static String removePunct(String str) {
        StringBuilder result = new StringBuilder(str.length());
        for (int i = 0; i < str.length(); i++) {
            char c = str.charAt(i);
            if (!PUNCT_SET.contains(c)) {
                result.append(c);
            }
        }
        return result.toString();
    }


    public static final String PATH = "/Applications/Новая папка/C++/Kursovaya/Files";
    public static void main(String[] args) throws FileNotFoundException {

        File dir = new File(PATH);
        if (dir.exists()) {
            System.out.println("The folder exist");
        } else {
            System.out.println("The folder not exist");
        }
        // просмотро содержимого папки  и если папка пуста завершает программу
        File[] fileArray = dir.listFiles();
        if (fileArray == null) {
            System.out.println("The folder is empty");
            return; // final program
        }

        File text = new File(PATH + "/myFile.txt");

            Scanner scanner = new Scanner(text) ;
        //String line = scanner.nextLine();
        //String[] wordsText = line.split( " ");
        String[] a = null;
        for (int i = 0; i < 10000; i++) {
            while (scanner.hasNext()) {

                String line = scanner.next();

                String[] wordsText = line.split( " ");
                System.out.println(wordsText.length);

                a = Arrays.copyOf(wordsText, wordsText.length + 1);
                System.out.println(Arrays.toString(a));
                //String[] a = null;
                //Arrays.copyOf(wordsText, wordsText.length+1);
                }
                //System.out.println("\n" + a.length);
               // System.out.println(Arrays.toString(a));

            }
        System.out.println(Arrays.toString(a));
scanner.close();
    }
}

Ответы (1 шт):

Автор решения: Agzam

Код:

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;

public class Main {

    public static void main(String[] args) {
        try {
            String text = readFile("ПУТЬ");
            String withoutPunctuationMarks = removePunctuationMarks(text);
            System.out.println("Text:   \t| " + text);
            System.out.println("No Marks:\t| " + withoutPunctuationMarks);
            System.out.println("Words:  \t| " + Arrays.toString(toWords(withoutPunctuationMarks)));
        } catch (IOException e) {
            System.err.println("Файл не найден!");
        }
    }
    
    public static String[] toWords(String text) { // Разбиваем строку на слова
        return text.split(" ");
    }

    public static String removePunctuationMarks(String text) { // Убираем лишние знаки препинания (и другие спец символы)
        StringBuilder newText = new StringBuilder();
        boolean isSpace = true; // Заодно уберем лишние пробелы 
        for (char c : text.toCharArray()) {
            if(Character.isLetter(c)) {
                newText.append(c);
                isSpace = false;
            }else if(!isSpace) {
                newText.append(' ');
                isSpace = true;
            }
        }
        return newText.toString();
    }

    public static String readFile(String path) throws IOException { // Читаем файл
        String string = "";
        byte[] all = Files.readAllBytes(Paths.get(path));
        string = new String(all);
        return string;
    }
}

Консоль:

Text:       | 10) Помогите!              Как написать программу  считывающую из фала с текстом данные в массив строк, а затем убрать все знаки препинания?
No Marks:   | Помогите Как написать программу считывающую из фала с текстом данные в массив строк а затем убрать все знаки препинания 
Words:      | [Помогите, Как, написать, программу, считывающую, из, фала, с, текстом, данные, в, массив, строк, а, затем, убрать, все, знаки, препинания]
→ Ссылка