【问题标题】:Parse string in Java [duplicate]在Java中解析字符串[重复]
【发布时间】:2013-12-04 04:32:33
【问题描述】:

我有一个以下格式的字符串

// JCSDL_MASTER b04591342ee71a2baa468d9d2a340ec8 AND
// JCSDL_VERSION 1.0
// JCSDL_START 0980a5f2ef935c4ed153bf975879eac0 twitter.text,contains_any,27-52
twitter.text contains_any "obama, santorum, gingrich, romney, ronpaul, ron paul"
// JCSDL_END
AND
// JCSDL_START f7c18a6fedd90c6b4d77acc14a3a8e5c interaction.type,in,21-29
interaction.type in "twitter,facebook,digg,youtube"
// JCSDL_END
// JCSDL_MASTER_END

我想它在末尾包含换行符,我只需要获取那些不是由 // 如何仅获取这些行开始的行?

【问题讨论】:

  • 逐行循环遍历文件,仅适用于不以'//'开头的文件。
  • 它不在文件中它是简单的字符串变量
  • 我明白了。那么这只是输出:我假设你的字符串里面有字符\n?在该字符上拆分您的字符串,然后检查它是否以 // 开头。

标签: java string parsing


【解决方案1】:

很简单,只需将字符串拆分为单独的行(注意:\n 是换行符的转义字符),然后仅使用不以 // 开头的每一行

String[] lines = string.split("\\n");

for (String line : lines)
{
  if (!line.startsWith("//"))
  {
    //use the line and do your thing
  }
}

【讨论】:

    【解决方案2】:

    使用Scanner.nextLine() 读取每一行,然后忽略以// 开头的行,如下所示:

        String str = "hi \n//this is kuleep\nthis is a test class";
        Scanner sc = new Scanner(str);
        while (sc.hasNextLine()) {
            String line = sc.nextLine();
            if(!line.startsWith("//"))
            {
                System.out.println(line);
            }
        }
    

    【讨论】:

    • 来吧,一些合适的代码怎么样
    • 对不起,我的错,我急着写答案。这是正确的代码。
    • 请 DOWNVOTER 解释一下这段代码有什么问题。我现在在这里添加了完整的代码,并测试了它的工作原理。
    • 我最初根据我的原始评论对你投了反对票。仍然与卢克的回答相比,我觉得为此实例化一个扫描仪是过分的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    • 2013-11-02
    • 1970-01-01
    • 1970-01-01
    • 2021-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多