Hello/24/world 87
Запустим программу и на выводе получим:
Hello
24
world 87
Воспользуемся методом findInLine() для того чтобы найти все слова. Воспользуемся регулярным выражением:
Pattern patt = Pattern.compile("[a-z A-Z]+");
изменим код следующим образом:
while (scan.hasNext()) {
System.out.println(scan.findInLine(patt));
scan.next();
}
На выводе получим:
Hello
world
Если добавить перед циклом:
scan.skip("Hello");
То на выходе будет только:
World
Задача 7.5. Напишите программу, заменяющую в текстовом файле все вхождения строки на новую строку. Имя файла и строки передаются из командной строки. Аргументы следующие:
SourceFile TargetFile oldString NewString.
Например, при вводе
FormatString.java t.txt StringBuilder StringBuffer
следует заменить все вхождения StringBuilder на StringBuffer в файле FormatString.java и сохранить новый файл t.txt.
Объяснение: первоначально программа проверяет количество аргументов, переданных в главный метод из командной строки. Если аргументы не переданы программа завершает свою работу и выдает соответствующее сообщение. Далее проводятся проверки, существуют ли исходный и целевой файлы.
Создается Scanner для исходного файла, и PrintWriter для записи в целевой файл. В цикле while считывается строка из исходного файла и заменяется на новую, далее новая строка записывается в целевой файл. Чтобы гарантировать, что данные будут сохранены в файле должным образом, в конце программы с помощью метода close() закрываем входной и выходной потоки.
В нормальной ситуации, программа завершается после копирования файла. Аварийно программа может завершиться в случае, если не были введены аргументы командной строки, если исходный файл не существует или если целевой файл уже существует.
import java.io.*;
import java.util.*;
public class ReplaceText {
public static void main(String[] args) throws Exception {
if (args.length != 4) {
System.out.println("Enter the command-line arguments");
System.exit(1);
}
//Проверяем существует ли исходный файл
File sourceFile = new File(args[0]);
if(!sourceFile.exists()){
System.out.println("Source file " + args[0]
+ " does not exist");
System.exit(2);
}
//Проверяем существует ли целевой файл
File targetFile = new File(args[1]);
if(targetFile.exists()){
System.out.println("Target file " + args[1]
+ " already exists");
System.exit(3);
}
//Создаем сканер для ввода и PrintWriter для вывода
Scanner input = new Scanner(sourceFile);
PrintWriter output = new PrintWriter(targetFile);
while(input.hasNext()){
String s1 = input.nextLine();
String s2 = s1.replaceAll(args[2], args[3]);
output.println(s2);
}
input.close();
output.close();
}
}