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: | [Помогите, Как, написать, программу, считывающую, из, фала, с, текстом, данные, в, массив, строк, а, затем, убрать, все, знаки, препинания]