例如,我希望将字符串"1:00 pm 2:00 pm 3:00 pm"
转换为["1:00 pm", "2:00 pm", "3:00 pm"]
的字符串数组
我尝试使用split。但这会产生["1:00", "pm", "2:00", "pm", "3:00", "pm"]
。我将如何分割其他空间?谢谢。
答案 0 :(得分:4)
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]
答案 1 :(得分: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
答案 2 :(得分:0)
您可以使用Java的indexOf方法来查找每个空间的索引,而仅将其他每个空间都考虑在内。然后,根据您对空格的了解创建一个子字符串,并将其添加到数组中。