Java 删除所有“;字;将arraylist写入文本文件时以https开头的 PrintWriter writer=new PrintWriter(“C:\\Users\\markc\\OneDrive\\Documents\\NetBeansProjects\\TwitterTest\\src\\text\\output.txt”); 对于(int i=0;i

Java 删除所有“;字;将arraylist写入文本文件时以https开头的 PrintWriter writer=new PrintWriter(“C:\\Users\\markc\\OneDrive\\Documents\\NetBeansProjects\\TwitterTest\\src\\text\\output.txt”); 对于(int i=0;i,java,arraylist,twitter,hyperlink,Java,Arraylist,Twitter,Hyperlink,在这里,我将tweets.get(I).getText()的内容逐行写入一个名为output.txt的新文本文件 这些tweet的某些内容包含以“http”开头的链接,我如何从文本文件中删除所有链接 谢谢 示例文本文件如下所示: PrintWriter writer=new PrintWriter(“C:\\Users\\markc\\OneDrive\\Documents\\NetBeansProjects\\TwitterTest\\src\\text\\output.txt”); 对于(i

在这里,我将tweets.get(I).getText()的内容逐行写入一个名为output.txt的新文本文件

这些tweet的某些内容包含以“http”开头的链接,我如何从文本文件中删除所有链接

谢谢 示例文本文件如下所示:

PrintWriter writer=new PrintWriter(“C:\\Users\\markc\\OneDrive\\Documents\\NetBeansProjects\\TwitterTest\\src\\text\\output.txt”);
对于(int i=0;i
PrintWriter writer=new PrintWriter(“C:\\Users\\markc\\OneDrive\\Documents\\NetBeansProjects\\TwitterTest\\src\\text\\output.txt”);
对于(int i=0;i
我觉得正则表达式可能是最好的方法。抱歉,我不知道除了链接(我们可以假设是http和下一个空间之间的任何链接)之外,您需要捕获所有内容的具体模式。如果我能弄明白的话,我会更新这篇文章,应该不会太难

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());
        }
编辑:不确定这是否是最好的方法,但它应该有效

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");

从大多数答案中可以看出,这是一个选择正则表达式的游戏。这将适用于不包含空白的URL,保留以下tweet的其余部分不变-
我喜欢pie。http://pie.com 我喜欢馅饼。很好
。摆弄它


你应该获取tweet的所有内容,然后将其拆分,以形成一个包含所有单词的数组,然后使用字符串regex,您不能再次包含以http或http开头的单词扫描您发布尝试的代码和一些包含
http
的文本示例,以及删除不必要部分后的外观。请发布示例文件您希望删除整个链接还是仅删除链接的http部分?我希望整个链接已删除,请解释((?m)^http.*,“”)的工作原理。请(?m):打开多行模式,以便行^anchor的开头与每行的开头匹配。^:匹配行的开头。http:匹配文本http序列..*将所有内容都匹配到行尾。@MarkChesser不用担心。我在编辑下添加了稍微好一点的代码:。如果它涵盖了您的所有案例,请不要忘记将其标记为答案。我如何进一步扩展此选项并删除以“@”开头的单词?您正在查找http或@。这也是受支持的:
(http |@)
-括号组是一对字符串,管道是符号或。退房
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());
        }
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");
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*", ""));
}
PrinterWriter writer = new PrinterWriter("...");
Pattern linkPattern = Pattern.compile("http\\S*");
for(...) {
    writer.println(linkPattern.matcher(tweets.get(i).getText()).replaceAll(""));
}