【问题标题】:How to turn a string into an array of strings?如何将一个字符串变成一个字符串数组?
【发布时间】:2019-07-15 01:26:41
【问题描述】:

比如我想让一个字符串"1:00 pm 2:00 pm 3:00 pm"变成一个["1:00 pm", "2:00 pm", "3:00 pm"]的字符串数组

我尝试过使用拆分。但它会产生["1:00", "pm", "2:00", "pm", "3:00", "pm"]。我将如何分割其他空间?谢谢。

【问题讨论】:

    标签: java parsing split


    【解决方案1】:

    split 使用正则表达式,正则表达式(?<=m) 使用m 作为分隔符并包含它来拆分字符串。但是第二个元素会有多余的空字符,您可以使用trim()方法将其删除

    String s =  "1:00 pm 2:00 pm 3:00 pm";
    
    String[] arr = s.split("(?<=m)");
    
    System.out.println(Arrays.toString(arr));   //[1:00 pm,  2:00 pm,  3:00 pm]
    

    【讨论】:

    【解决方案2】:

    对于您的问题,我可能会建议使用正式的 Java 正则表达式匹配器。这样做的原因是,您的时间字符串可能会作为更大字符串的一部分出现。

    String input = "1:00 pm 2:00 pm 3:00 pm";
    String pattern = "(?i)\\d{1,2}:\\d{2} [ap]m";
    Pattern r = Pattern.compile(pattern);
    Matcher m = r.matcher(input);
    while (m.find()) {
         System.out.println("Found a time: " + m.group(0));
    }
    

    打印出来:

    Found a time: 1:00 pm
    Found a time: 2:00 pm
    Found a time: 3:00 pm
    

    【讨论】:

      【解决方案3】:

      您可以使用 Java 的 indexOf 方法来查找每个空间的索引,并且只考虑其他每个空间。然后,使用您对空格的了解创建一个子字符串并将其添加到您的数组中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-25
        • 1970-01-01
        • 1970-01-01
        • 2022-12-17
        相关资源
        最近更新 更多