【发布时间】: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"]。我将如何分割其他空间?谢谢。
【问题讨论】:
比如我想让一个字符串"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"]。我将如何分割其他空间?谢谢。
【问题讨论】:
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]
【讨论】:
对于您的问题,我可能会建议使用正式的 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
【讨论】:
您可以使用 Java 的 indexOf 方法来查找每个空间的索引,并且只考虑其他每个空间。然后,使用您对空格的了解创建一个子字符串并将其添加到您的数组中。
【讨论】: