如何根据更改的字符而不是一个分隔符来拆分字符串?

How can I split a string based on chaging characters rather than one single separator?

我正在 java 中寻找一种解决方案,它允许我像这样 "MM/dd/yyyy" 拆分字符串,而不是基于“/”斜杠,而是基于 "M" 到 "d" 和从 "d" 到 "y"?

原因是我可能还需要使用这种根本没有分隔符的逻辑来拆分字符串,例如 "yyMMdd"。注意:我正在寻找拆分模式字符串本身,而不是一些遵循这些模式的实际日期字符串。

有什么想法吗?

如果您始终知道格式,例如 yyMMdd,您可以拆分每个字符并假设每 2 个字符都是您想要的。为此,您将使用不带分隔符的拆分:split('')

鉴于您只想拆分模式 - yy/MM/dd 或任何其他格式,而不是格式化为这些模式的实际日期,我宁愿在这里使用 Matcher 而不是 split().

String patternString = "yy/MM/dd";
Pattern pattern = Pattern.compile("y+|M+|d+");
Matcher matcher = pattern.matcher(patternString);

while (matcher.find()) {
    System.out.println(matcher.group());
}

这个解决方案不是在一些未知的分隔符上拆分,而是找到一个 yMd 的序列(与任何模式一样,它们只会按顺序出现).