【问题标题】:parse text file in java, how to remove ""在java中解析文本文件,如何删除“”
【发布时间】:2012-06-21 15:03:29
【问题描述】:

我有一个简单的 java 代码,它读取包含带双引号的句子的文本 csv 文件:“sentence1”、“sentence2”、“sentence3”。我想阅读其中的一些句子(例如,句子 1 和 3)。我创建了一个缓冲区读取器并使用 readLine() 然后使用:tokens = fileLine.split(","); 其中标记是字符串数组。

我使用数组索引访问了我感兴趣的句子:tokens[0]tokens[3]。问题是,我只想要没有双引号的句子。但是我的程序用“”保存了句子。我怎样才能改进解析技术,以便我可以保存没有“”的句子??

【问题讨论】:

标签: java regex parsing


【解决方案1】:

String#replaceAll怎么样:

theSentence = theSentence.replaceAll("\"", "");

在较新的 Java 版本中,我认为从 Java 5 开始,您也可以使用 String#replace(CharSequence,CharSequence)

theSentence = theSentence.replace("\"", "");

并避免正则表达式的开销

【讨论】:

  • 认为 theSentence.replace("\"", ""); 也可以。如果我错了,请纠正我。
  • @BlackVegetable - 你说得对,我刚刚编辑了答案,但这在旧 Java 版本中不可用。
【解决方案2】:
【解决方案3】:

您可以执行以下操作:

s = s.substring(1, s.length()-1);
tokens = s.split("\",\"");

请注意,您的实现会解析输入行 "Hello, world","second sentence" 作为数组

"Hello
world"
"second sentence"

仅当您的行本身不包含(转义)引号时,上述代码才有效。

【讨论】:

    【解决方案4】:

    你可以使用String.replaceAll(regex, replacement)的方法。

    例如:

    String s = "hello world";
    s = s.replaceAll("o","X");
    //s now equals "hellX wXrld"
    

    在您的情况下,您希望您的正则表达式为:"\"" 而你的替代品是:“”

    【讨论】:

      【解决方案5】:

      如果您只想从字符串的开头和结尾删除",您也可以这样做:

      String sentence="\"my sentence\"";
      System.out.println(sentence);//out->"my sentence"
      
      sentence = sentence.substring(1,sentence.length()-1);   
      System.out.println(sentence);//out->my sentence
      

      【讨论】:

        【解决方案6】:

        作为一个比任何东西都更有趣的解决方案,而不是立即拆分,为什么不这样做呢?

        String inputFromCSV; // This would have the value of what you read from the CSV.
        inputFromCSV=inputFromCSV.substring(1,sentence.length()-1); 
        String[] tokens = inputFromCSV.split("\",\""); // Essentially ","
        

        实际上看,它并没有那么糟糕,只要你的文件保持相同的格式,它就可以工作。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-02-21
          • 1970-01-01
          相关资源
          最近更新 更多