Я пишу программу, которая будет читать текстовый файл и выдавать ошибку, если в тексте есть какие-либо символы, которые не являются пробелами или символами слова.Выражение регулярного выражения кажется правильным, но оно не работает.
Например, следующие тексты:
Harry Potter$
Harry Potter
&&&&&&&&&&&&&&&&&&uvuoyvouyvouyvouyvouyv78789******
отображается в консоли без ошибки
Я также проверил выражение регулярного выражения на https://regexr.com/ *
Двойной \ необходим, поскольку в противном случае я получаю сообщение об ошибке Недопустимый escape-символ
import java.io.*;
public class DZ {
public static void main(String[] args) throws IOException {
try {
System.out.println(method());
} catch(Exception e){
System.out.println(e);
}
}
public static boolean compare(char wrt) {
String str = "[^\\s\\w]";
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == wrt) {
return true;
}
}
return false;
}
public static StringBuilder method() throws Exception {
int data;
FileReader fr = new FileReader("/Users/rachel_green/Documents/1.txt");
StringBuilder str = new StringBuilder();
while ((data = fr.read()) != -1) {
if (compare((char)data)) {
throw new Exception("Wrong file format");
} else {
str.append((char) data);
}
}
return str;
}
}