我想使用正则表达式将日期字符串从YYYY-MM-DD格式更改为DD.MM.YYYY格式。这是我的实施:
String date = "2008-12-30"; //30th Dec, 2008
String searchPattern = "(\\d{4})-(\\d\\d)-(\\d\\d)";
//Implementing the Pattern from searchPattern
Pattern pattern = Pattern.compile(searchPattern);
Matcher matcher = pattern.matcher(date);
String newDate = "";
if(matcher.find())
{
//Functions
newDate = matcher.replaceFirst(matcher.group(3)+"."+matcher.group(2)+"."+matcher.group(1));
//Issue with group text
// newDate = matcher.replaceFirst("\3.\2.\1");
}
如果我使用像\ 1,\ 2等捕获的组,则输出包含有趣的文本。所以,简而言之问题是:
matcher.group(1)函数 \ 1返回有趣的文字
答案 0 :(得分:0)
正如其他人已经说过使用DateFormat更适合这个目的,可能你已经找到了问题的解决方案。但是当我尝试运行你的代码时,我确实能够复制你提到的内容。
令人惊讶的是,根据输出的流量,我得到了不同的字符。输出与你的正则表达式expr无关。无论如何,你可以通过编写像
这样简单的东西来获得相同的东西System.out.println((char) 3 + "." + (char) 2 + "." + (char) 1);
这里,代码点3,2和1的解释方式不同,具体取决于使用它们的上下文。它们可以分别解释为控制字符ETX,STX和SOH,或者在视频显示设备上使用时可以解释为图形符号。
我的日食输出:
└.┐.┌
(Eclipse控制台可能映射到错误的Windows Glyph List 4个字符)
DOS输出:
♥.☻.☺
(这里Code page 437正在使用中)
答案 1 :(得分:0)
为什么不呢:
String newDate = date.replaceAll("(\\d{4})-(\\d\\d)-(\\d\\d)", "$3.$2.$1");