Как заменить несколько вхождений строки в текстовом файле на переменную, введенную пользователем, и сохранить все в новом файле? - PullRequest
1 голос
/ 14 сентября 2009
 public static void main(String args[])
     {
     try
         {
         File file = new File("input.txt");
         BufferedReader reader = new BufferedReader(new FileReader(file));
         String line = "000000", oldtext = "414141";
         while((line = reader.readLine()) != null)
             {
             oldtext += line + "\r\n";
         }
         reader.close();
         // replace a word in a file
         //String newtext = oldtext.replaceAll("drink", "Love");

         //To replace a line in a file
         String newtext = oldtext.replaceAll("This is test string 20000", "blah blah blah");

         FileWriter writer = new FileWriter("input.txt");
         writer.write(newtext);writer.close();
     }
     catch (IOException ioe)
         {
         ioe.printStackTrace();
     }
 }

}

Ответы [ 3 ]

1 голос
/ 14 сентября 2009

Пара предложений на вашем примере кода:

  1. Пусть пользователь введет старый и новый в командной строке (то есть args [0] и args 1 ).
  2. Если достаточно сделать эту строку за раз, будет гораздо эффективнее прочитать строку, заменить старую -> новую, а затем вывести ее.

Также ознакомьтесь с StringUtils и IOUtils , которые могут упростить вашу жизнь в этом случае.

0 голосов
/ 14 сентября 2009

После прочтения вашего последнего комментария - это совершенно другая история ... предпочтительным решением было бы проанализировать файл css в объектную модель (например, DOM), применить там изменения и впоследствии сериализовать модель в css. Гораздо проще найти все цветовые атрибуты в DOM и изменить их, чем делать то же самое с поиском и заменой.

Я нашел какой-то CSS-парсер в дикой дикой сети, но ни один из них не выглядел как способный писать CSS-файлы.

Если вы хотите заменить имена цветов поиском и заменой, вы должны выполнить поиск «color: » и заменить его на «color: ». Возможно, вам придется сделать то же самое для 'color: "", потому что имя цвета может быть установлено в двойных кавычках (еще один аргумент для использования синтаксического анализатора CSS ..)

String.replaceAll () - самый простой способ сделать это. Просто прочитайте весь CSS-файл в одну строку, замените все, как предложено выше, и запишите новую строку в тот же (или временный) файл (сначала).

0 голосов
/ 14 сентября 2009

Самой простой является функция String.replace (oldstring, newstring) или String.replaceAll (regex, newString), вы можете просто прочитать один файл и записать замену в новый файл (или сделать это построчно, если вы Вы обеспокоены размером файла).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...