java - 在 JAVA 中分隔没有空格的字符串

标签 java regex whitespace

我在分隔字符串字符时遇到问题。 这些是我拥有的原始字符串

"MH 02:30pm-04:00pm TF 08:30am-10:00am"
"MTWS 07:00 am-09:00 am, A 08:30 am-11:00 am"
"WS 01:00pm-05:00pm F 11:30am-01:00pm"

这些字符串是来自名为“schedule”的表列的数据库值。我只看过 特权,所以我不能改变数据,而且数据库很大,很难改变 计划列的格式。

我的目的是从返回日期的字符串中提取类(class)表 (MTWHFSA), 开始时间和结束时间。到目前为止我所做的是使用 StringTokenizer。我未曾 成功,因为如您所见,数据库返回的字符串格式各不相同。 它并不总是返回相同的格式。所以我想删除所有空格 所有将具有相同的格式。示例:

"MH02:30pm-04:00pmTF08:30am-10:00am"

拜托,谁能帮我提取日期(MTWHFSA)、开始时间和结束时间 来自上面的字符串?

示例代码如下:

String sched = "MTWHFS 02:30pm-04:00am W 08:30am-10:00am";
StringTokenizer token = new StringTokenizer(sched,",");
    while(token.hasMoreTokens()){
        StringTokenizer anotherToken = new StringTokenizer(token.nextToken(),"\\ ?\\-?");
        while(anotherToken.hasMoreTokens()){
            System.out.println(anotherToken.nextToken());
        }
    }

正确输出:

MTWHFS
02:30pm
04:00am
W
08:30am
10:00am

但是如果字符串是这样的:

String sched = "MTWHFS 02:30 pm-04:00 am W 08:30 am-10:00 am";

它的输出变成:

MTWHFS
02:30
pm
04:00
am
W
08:30
am
10:00
am

当字符串格式不同时输出也不同,这就是为什么我删除了空格以使字符串格式相同。

但是当字符串没有像这样的空格时:

String sched = "MTWHFS02:30pm-04:00amW08:30am-10:00am";

它输出的不是我想要的。

MTWHFS02:30pm
04:00amW08:30am
10:00am

谁能帮我解决这个问题,让这个字符串:

String sched = "MTWHFS02:30pm-04:00amW08:30am-10:00am";

将输出:

MTWHFS
02:30pm
04:00am
W
08:30am
10:00am

谢谢。

最佳答案

您可以使用正则表达式。使用正则表达式的好处是它还会为您检查输入是否具有预期的格式。

此正则表达式应匹配单个计划条目:

([A-Z]+)([0-9]{2}:[0-9]{2}(?:am|pm))-([0-9]{2}:[0-9]{2}(?:am|pm))

capture groups在正则表达式中给你日期、开始和结束时间。您可以像这样在 Java 中使用它:

// the input string which may contain spaces
String s = "MH02:30pm-04:00pmTF08:30am-10:00am"; 
s = s.replaceAll("\\s+", ""); //remove the spaces
Pattern rg = Pattern.compile("([A-Z]+)([0-9]{2}:[0-9]{2}(?:am|pm))-([0-9]{2}:[0-9]{2}(?:am|pm))");
final Matcher matcher = rg.matcher(s);
while(matcher.find()) {
    //find all the groups
    for(int i=0;i<=matcher.groupCount();i++) {
        System.out.println(matcher.group(i));
    }
}

关于java - 在 JAVA 中分隔没有空格的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17852343/

相关文章:

java - 在 Swing 中创建等距菜单

java - 将整数数组转换为具有给定顺序的树

java - 是否有一个通用的 Java 库可以处理一组字符串的 URL 编码/解码?

java - 如何将字符串(通过匹配一组正则表达式)拆分为标记并在 JAVA 中打印每个标记?

java - 删除特定模式的正则表达式

html - 浏览器是否删除任何 html 标签文本之间的空格

java - 对特定 json 元素上的 jsonobjects 数组列表进行排序

regex - 替换数据框中的字符串模式

javascript - javascript正则表达式中奇怪的空格

jquery - 我的网页底部有一些不必要的空白,有人可以帮我去掉吗?