0

在我的程序中,用户应该能够指定命名方案。他们指定的命名方案应包含简单的日期格式,例如“yyyyMMdd”、“MM-dd-yyyy”、“yyyy/MM/dd”等。我更喜欢日、月和年的顺序,而不是重要的但可能需要一定的顺序(比如先是年,然后是月,然后是日)。我希望能够轻松地从字符串中检索此日期,以便将其与 SimpleDateFormat 类一起使用。

这里有些例子:

input string:    "abc?>@dyyyy-MM-dd-|(s*&d)"
output string:   "yyyy-MM-dd"

input string:    "daddy-MM/dd/yyyy-moMMy"
output string:   "MM/dd/yyyy"

最终我想要做的是替换(在用户提供的字符串中)用当前日期指定的日期格式。

如果我想修复它,以便用户只能输入年份,然后是月份,然后是日期,那么我可以执行以下操作:

String dateFormat = name.substring(name.indexOf("yyyy"), name.indexOf("dd") + 2)

但这意味着用户不能在字符串的其余部分使用字符串序列“yyyy”和“dd”,否则此方法将不起作用。这个表达式也可以用正则表达式表示,但我不知道如何轻松地从字符串中提取与正则表达式匹配的子字符串。

4

1 回答 1

2

使用正则表达式模式

(MM|dd|yyyy)[\\/-]?(?!\\1)(MM|dd|yyyy)[\\/-]?(?!\\1)(?!\\2)(MM|dd|yyyy)

[...]您可能希望在上述模式的部分中添加一些您希望允许的其他分隔符。

于 2012-10-16T16:35:54.847 回答