将arraylist写入文本文件时,删除所有以https开头的“单词”

时间:2017-03-17 12:29:19

标签: java arraylist twitter hyperlink

PrintWriter writer = new PrintWriter("C:\\Users\\markc\\OneDrive\\Documents\\NetBeansProjects\\TwitterTest\\src\\text\\output.txt");

for (int i = 0; i < tweetsArray.size(); i++) {
    writer.println(tweets.get(i).getText());
}

这里我将tweets.get(i).getText()的内容逐行写入名为output.txt的新文本文件。

这些推文的部分内容包含以“http”开头的链接,如何从文本文件中删除所有链接?

由于 示例文本文件如下所示: http://imgur.com/efk3ifA

4 个答案:

答案 0 :(得分:0)

PrintWriter writer = new PrintWriter("C:\\Users\\markc\\OneDrive\\Documents\\NetBeansProjects\\TwitterTest\\src\\text\\output.txt");
for (int i = 0; i < tweetsArray.size(); i++) {
     writer.println(tweets.get(i).getText().replaceAll("(?m)^http.*", ""));
}`

答案 1 :(得分:0)

PrintWriter writer = new PrintWriter("C:\\Users\\markc\\OneDrive\\Documents\\NetBeansProjects\\TwitterTest\\src\\text\\output.txt");

for (int i = 0; i < tweetsArray.size(); i++) {
            if(tweets.get(i).getText().indexOf("http") != 0 )
                writer.println(tweets.get(i).getText());
        }

答案 2 :(得分:0)

我觉得正则表达式可能是最好的方法。对不起,我不知道您需要捕获除链接之外的所有特定模式(我们可以假设它是http和下一个空格之间的任何内容)。如果我能弄明白的话,我会更新帖子,不应该太难。

Pattern p = Pattern.compile(regex pattern);
String line;
while ((line = reader.readline()) != null)
    Matcher m = p.matcher(line);
    if (m.find())
        writer.write(m.group() + "\r\n");

编辑:不确定这是否是最佳方式,但它应该有效

Pattern p = Pattern.compile("(.*?)(?:http.*? )(.*$)");
String line;
while ((line = reader.readline()) != null)
    Matcher m = p.matcher(line);
    if (m.find())
        writer.write(m.group(1) + m.group(2) + "\r\n");

答案 3 :(得分:0)

从大多数答案中可以看出,这是一款选择正则表达式的游戏。这适用于不包含空格的网址,以下信息的其余部分保持不变 - i like pie. http://pie.com is great变为i like pie. is great。摆弄它here

PrintWriter writer = new PrintWriter("C:\\Users\\markc\\OneDrive\\Documents\\NetBeansProjects\\TwitterTest\\src\\text\\output.txt");
for (int i = 0; i < tweetsArray.size(); i++) {
     writer.println(tweets.get(i).getText().replaceAll("http\\S*", ""));
}

编辑:

对于后人来说,这是一个稍微高效的版本,不会为每条推文重新编译RegEx模式。:

PrinterWriter writer = new PrinterWriter("...");
Pattern linkPattern = Pattern.compile("http\\S*");
for(...) {
    writer.println(linkPattern.matcher(tweets.get(i).getText()).replaceAll(""));
}