Как удалить строку внутри текстового файла, если она не совпадает со строкой ввода пользователя? - PullRequest
2 голосов
/ 04 апреля 2011

Допустим, у меня есть пользовательский ввод "placeofjo.blogspot.com"

Мой код извлекает ссылки с этого сайта и размещает ссылки в текстовом файле.

Теперь текстовый файл имеет следующее содержание:

http://www.twitter.com/jozefinfin/
http://www.facebook.com/jozefinfin/
http://placeofjo.blogspot.com/2008_08_01_archive.html
http://placeofjo.blogspot.com/2008_09_01_archive.html
http://placeofjo.blogspot.com/2008_10_01_archive.html
http://placeofjo.blogspot.com/2008_11_01_archive.html
http://placeofjo.blogspot.com/2008_12_01_archive.html
http://placeofjo.blogspot.com/2009_01_01_archive.html
http://placeofjo.blogspot.com/2009_02_01_archive.html
http://placeofjo.blogspot.com/2009_03_01_archive.html
http://placeofjo.blogspot.com/2009_04_01_archive.html
http://placeofjo.blogspot.com/2009_05_01_archive.html
http://placeofjo.blogspot.com/2009_06_01_archive.html
http://placeofjo.blogspot.com/2009_07_01_archive.html
http://placeofjo.blogspot.com/2009_08_01_archive.html
http://placeofjo.blogspot.com/2009_09_01_archive.html
http://placeofjo.blogspot.com/2009_10_01_archive.html
http://placeofjo.blogspot.com/2009_11_01_archive.html
http://placeofjo.blogspot.com/2010_01_01_archive.html
http://placeofjo.blogspot.com/2010_02_01_archive.html
http://placeofjo.blogspot.com/2010_04_01_archive.html
http://placeofjo.blogspot.com/2010_06_01_archive.html
http://placeofjo.blogspot.com/2010_07_01_archive.html
http://placeofjo.blogspot.com/2010_08_01_archive.html
http://placeofjo.blogspot.com/2010_10_01_archive.html
http://placeofjo.blogspot.com/2010_11_01_archive.html
http://placeofjo.blogspot.com/2011_01_01_archive.html
http://placeofjo.blogspot.com/2011_02_01_archive.html
http://placeofjo.blogspot.com/2011_03_01_archive.html
http://endlessdance.blogspot.com
http://blogskins.com/me/aaaaaa
http://weheartit.com

Я хотел бы удалить

http://www.twitter.com/jozefinfin/
http://www.facebook.com/jozefinfin/
http://endlessdance.blogspot.com
http://blogskins.com/me/aaaaaa
http://weheartit.com

и оставил только строки, которые похожи только на ввод пользователя. Как мне это сделать?

Желаемое содержимое текстового файла:

 http://placeofjo.blogspot.com/2008_08_01_archive.html
    http://placeofjo.blogspot.com/2008_09_01_archive.html
    http://placeofjo.blogspot.com/2008_10_01_archive.html
    "                    "
    "                    "

Ответы [ 4 ]

1 голос
/ 04 апреля 2011
  1. Читать файл Line by Line
  2. Проверьте строку, если она содержит ввод пользователя
  3. Если это так, запишите его в новый файл
0 голосов
/ 04 апреля 2011

Вот регулярное выражение для решения этой проблемы .. Но вы не должны использовать это решение с большими файлами ..

import java.io.File;
import java.io.IOException;
import java.util.regex.Pattern;
import org.apache.commons.io.FileUtils;

public class FileReplacer {


    public static void main(String[] args) {
        replaceFileContent();
    }

    public static void replaceFileContent() {
        try {
            String allStr = FileUtils.readFileToString(new File("c:/temp/data.txt"));
            Pattern pattern =Pattern.compile("^(?!http://placeofjo\\.blogspot\\.com/.*$).+$(\\r\\n)?", Pattern.MULTILINE);
            String newAllStr = pattern.matcher(allStr).replaceAll("");
            FileUtils.writeStringToFile(new File("c:/temp/newdata.txt"), newAllStr);

        } catch (IOException e) {
            // TODO Auto-generated catch block
            throw new RuntimeException(e);
        }
    }
}
0 голосов
/ 04 апреля 2011

Вместо создания текстового файла и последующей его фильтрации. Делайте фильтр при разборе веб-страницы. Просто ищите ссылки, которые соответствуют вашим критериям, и пишите только хорошие ссылки на файл.

0 голосов
/ 04 апреля 2011

Предполагая, что вы можете хранить весь список ссылок в памяти одновременно, что вы, вероятно, можете, так как ссылки с веб-сайта ...

  1. Читать в файле, разделить нановые строки и создать список ссылок.
  2. Отфильтруйте список, чтобы удалить все несоответствующие ссылки
  3. Запишите полученный отфильтрованный список обратно в файл, заменив старое содержимое файла

Длясоответствие в фильтре, я подумал бы использовать

string.indexOf(inputToMatch) > 0 // it matches
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...