package com.javarush.task.task19.task1923;
/*
Слова с цифрами
*/
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Solution {
public static void main(String[] args) throws IOException {
FileReader fileReader = new FileReader(args[0]);
// FileReader fileReader = new FileReader("E:\\4alice\\Code\\JavaRushTask\\JavaRushTasks\\2.JavaCore\\src\\com\\javarush\\task\\task19\\task1923\\file");
StringBuilder str = new StringBuilder();
while (fileReader.ready()) {
str.append((char) fileReader.read());
}
fileReader.close();
String[] words = str.toString().split(" ");
FileWriter fileWriter = new FileWriter(args[1]);
// FileWriter fileWriter = new FileWriter("E:\\4alice\\Code\\JavaRushTask\\JavaRushTasks\\2.JavaCore\\src\\com\\javarush\\task\\task19\\task1923\\file2");
Pattern pattern = Pattern.compile("\\w*\\d\\w*", Pattern.UNICODE_CASE);
for (int i = 0; i < words.length; i++) {
Matcher matcher = pattern.matcher(words[i]);
if (matcher.find() && i != words.length - 1) {
fileWriter.write(words[i] + " ");
} else if (matcher.find() && i == words.length - 1) {
fileWriter.write(words[i]);
}
}
fileWriter.close();
}
}
Alice Koshova
29 уровень
Валидатор не принимает
Обсуждается
Комментарии (2)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Алексей
15 марта 2019, 11:57
В патерне есть несколько проблем:
1."Записать все слова, которые содержат цифрЫ...(то есть может быть не одна цифра)"
2.\\w уже содержит цыфры, а потому ваш паттерн звучит примерно так "найди все слова в которых есть \\буквы, цифры и знак нижнего подчеркивания, а кроме того в нем есть \\цифра, и потом опять могут быть \\буквы, цифры и знак нижнего подчеркивания.
Рекомендую на первых парах использовать более конкретные указания типа [a-zA-Z0-9] (в вашем случае будет выглядеть немного иначе)
0
--------Master
12 марта 2019, 18:02
Насколько я знаю, просто числа типа "123" не должны писаться
0