【问题标题】:removing comments from a text file从文本文件中删除注释
【发布时间】:2014-02-08 10:59:51
【问题描述】:

这里是示例文本

|英文停用词列表。评论以竖线开头。每一站 |单词在行首。

|以下许多表格非常罕见(例如“您自己”),但包括 |完整性。

       | PRONOUNS FORMS
         | 1st person sing

我 |主题,当然总是大写

我 |对象

我的 |所有格形容词

我想删除所有出现在栏右侧的文本,包括栏本身,我在正则表达式方面没有什么困难。

这是我一直在尝试的代码

FileReader reader = new FileReader("C:\\Users\\Masood\\Desktop\\IR\\Programming\\Material\\stopwords.txt");
    StringBuilder sb = new StringBuilder();
    BufferedReader br = new BufferedReader(reader);
    String line;
    String source2 = null;
    while ( (line=br.readLine()) != null) {
        line.replaceAll("[|(.*)]","");
        sb.append(line);
    }

    String source = sb.toString();    
    System.out.println(source);

我输出的是字符串''i me my'',其他的都应该没有了

【问题讨论】:

  • 试试这个正则表达式:[|](.*)[\n]

标签: java regex string parsing


【解决方案1】:
  1. String 是不可变的,因此您需要将 replaceAll 值分配给 line 本身。
  2. 您需要在您的正则表达式中转义 |,因为 | 本身就是一个正则表达式 (\\|)
  3. 您不必使用字符类 - 用方括号括起来,因为它会找到您的 | 并替换它

代码(靠近你的regex):

String line = "i | subject, always in upper case of course";
line = line.replaceAll("\\|(.*)","");
System.out.println(line);

输出:

i 

正则表达式解释: http://regex101.com/r/gY6wE1

【讨论】:

    【解决方案2】:

    这个正则表达式确实匹配后面的部分 |包括|。

    \|.+$
    

    【讨论】:

      【解决方案3】:

      这里是一个例子,你可以适应你的情况,使用 substring 方法并传递开始索引和竖线出现的索引。

      public static void main(String[] args) {
          String a = "i | subject, always in upper case of course";
      
          String b = "me | object";
      
          String c = "my | possessive adjective";
      
          System.out.println(a.substring(0, a.indexOf('|')));
          System.out.println(b.substring(0, b.indexOf('|')));
          System.out.println(c.substring(0, c.indexOf('|')));
      }
      

      输出:

      i 
      me 
      my 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-02-02
        • 2015-05-11
        • 1970-01-01
        • 2018-04-07
        • 1970-01-01
        • 2011-07-29
        • 1970-01-01
        • 2021-02-20
        相关资源
        最近更新 更多