【问题标题】:Java: String splitting into multiple elementsJava:字符串拆分为多个元素
【发布时间】:2012-04-13 19:19:15
【问题描述】:

我很难弄清楚如何拆分如下字符串:

String str = "hi=bye,hello,goodbye,pickle,noodle

此字符串是从文本文件中读取的,我需要将字符串拆分为逗号之间的每个元素。因此,无论文本文件读取什么内容,我都需要将每个元素拆分为自己的字符串。请记住,每个元素可以是任意长度,并且可以有任意数量的 'hi' 等于的元素。有任何想法吗?谢谢!

【问题讨论】:

    标签: java string file text split


    【解决方案1】:

    使用拆分!

    String[] set=str.split(",");
    

    然后根据需要从 set[...] 访问每个字符串(假设您想要第三个字符串,您会说:set[2])。

    作为测试,您可以将它们全部打印出来:

    for(int i=0; i<set.length;i++){
        System.out.println(set[i]);
    }
    

    【讨论】:

    • 或使用Arrays.toString(set) [用于测试]
    • Split 很棒,因为您可以使用正则表达式。例如: str.split(",\\s*") 该代码会将源字符串 (str) 拆分为每个逗号和零个或多个 (*) 空格。
    • 谢谢!我不敢相信我以前从未听说过这种方法......谢谢!
    • 别忘了先用split("=")提取名字——在这种情况下是hi
    【解决方案2】:

    如果您需要更高级的方法,我建议使用 guava 的 Splitter 类:

    Iterable<String> split = Splitter.on(',')
                                     .omitEmptyStrings()
                                     .trimResults()
                                     .split(" bye,hello,goodbye,, , pickle, noodle  ");
    

    这将消除前导或尾随空格并省略空白匹配。这个类有一些更酷的东西,比如将你的字符串拆分成键/值对。

    【讨论】:

      【解决方案3】:
      str = str.subString(indexOf('=')+1); // remove "hi=" part
      String[] set=str.split(",");
      

      【讨论】:

        【解决方案4】:

        我想知道:你的意思是这样拆分它吗:

        "hi=bye"
        "hi=hello"
        "hi=goodbye"
        "hi=pickle"
        "hi=noodle"
        

        因为简单的 split(",") 不会这样做。在给定字符串中包含“hi=”的目的是什么?

        如果您想从字符串的前面删除 hi=,可能会这样做:

        String input = "hi=bye,hello,goodbye,pickle,noodle";
        String hi[] = input.split(",");
        hi[0] = (hi[0].split("="))[1];
        for (String item : hi) {
            System.out.println(item);
        }
        

        【讨论】:

        • 是的,我很确定我是他/她要找的东西,虽然我没有走那么远,因为可以再次使用 split 在开始时获得 hi 并且组合字符串应该是相对的从那里很容易弄清楚。无论哪种方式,似乎困难在于拆分字符串,而不是将“hi =”应用于所有字符串。
        猜你喜欢
        • 1970-01-01
        • 2013-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-17
        • 2012-02-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多