Тестил на файле, в котором содержится следующий текст:
Просто како1й-то набо3р слов и бувфыв
если 44содержит цфвфц бувтку ли цифр345
ац23 если не содер 124жит
то ничего
не надо 777 выводить
к21 цй а1 आप5ला कोड श2ब्द पूर्ण0पणे कार्य करत नाही
в этой строке12 етсь 4 слова с ци888рами
mozhe13t tak 4e 12rabotaet
f qwkwpqo_12214 15315513511513
Вывод:
како1й набо3р 44содержит цифр345 ац23 124жит 777 к21 а1 आप5ल श2ब्द पूर्ण0पणे строке12 4 ци888рами mozhe13t 4e 12rabotaet qwkwpqo_12214 15315513511513
Логика: читаю строку файла, вытягиваю слово, проверяю есть ли в этом слове цифра, если есть - добавляю в лист, ищу дальше. После прогона всего файла записываю результат: слово + " "
В чем, собственно проблема ?
package com.javarush.task.task19.task1923;
/*
Слова с цифрами
*/
import java.io.*;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Solution {
public static void main(String[] args) {
ArrayList<String> list = readFile(args[0]);
writeFile(args[1], list);
// for (String string : list) {
// System.out.println(string);
// }
}
public static ArrayList<String> readFile (String fileName) {
ArrayList<String> list = new ArrayList<>();
try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) {
for (String string = reader.readLine(); string != null; string = reader.readLine()) {
Pattern pattern = Pattern.compile("\\b.+?\\b");
Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
String prom = string.substring(matcher.start(),matcher.end());
// list.add(prom);
Pattern pattern2 = Pattern.compile("\\d+");
Matcher matcher2 = pattern2.matcher(prom);
if (matcher2.find()) {
list.add(prom);
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
public static void writeFile (String fileName, ArrayList<String> list) {
try (BufferedWriter writer = new BufferedWriter(new FileWriter(fileName))) {
for (String string : list) {
writer.write(string + " ");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}