【问题标题】:Using delimiter to organize a set使用分隔符组织集合
【发布时间】:2014-03-10 02:25:19
【问题描述】:

有没有办法在分隔符符号出现时使用分隔符?

例如,您有一组用逗号分隔的字符串,如下所示:(yes, 2, my, 15, face, 9) 我希望单词与紧随其后的数字配对,并将上述集合分成以下内容:((yes, 2), (my, 15), (face, 9))。我为此使用了一个自定义列表,所以实际上我添加了每个元素 [例如。 (是的,2])到列表中。

【问题讨论】:

    标签: java java.util.scanner delimiter


    【解决方案1】:

    您可以使用正则表达式模式。这段代码描述了一个解决方案(由于我不知道你想如何存储它,我只是打印出来)。

    String data = "yes,2,my,15,face,9";
    
    Pattern p = Pattern.compile("[^,]*,[^,]*,?");
    Matcher matcher = p.matcher(data);
    
    while (matcher.find()) {
        String[] splitted = matcher.group().split(",");
        System.out.println(splitted[0]);
        System.out.println(splitted[1]);
        System.out.println("******************");
    }
    

    这个输出:

    yes
    2
    ******************
    my
    15
    ******************
    face
    9
    ******************
    

    另一种解决方案是将Scanner 与分隔符“,”一起使用,并将返回的部分配对。

    【讨论】:

      【解决方案2】:

      您可以简单地使用分隔符(在您的情况下为逗号)解析字符串,然后将每一对处理成一个条目,并制作这些条目的列表。 (看起来像作业,所以没有指定确切的代码)。

      【讨论】:

        【解决方案3】:

        您为什么关心“分隔符”?如果我是你,我会做这样的事情。

        String input = "Yes, 2, my, 15, face, 9";
        String delimiter = ",";
        List<Pair> s = createPairs(Arrays.asList(input.split(delimiter))); 
        
        List<Pair> createPairs(List<String> input) {
          // read 2 at a time and create a Pair Object 
        }  
        

        `

        这样,我可以使用任何分隔符并保持我的 API 干净。如果这只是一次工作并且模式固定(字符串后跟,(逗号)和数字),那么您也可以使用正则表达式来匹配它。谷歌一下,你会发现很多。

        【讨论】:

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