我试图用dot分割String我无法得到答案
String dob = "05.08.2010";
String arr[] = dob.split(".");
System.out.println(arr[0]+":"+arr[1]+":"+arr[2]);
答案 0 :(得分:3)
试试这个
String arr[] = dob.split("\\.");
即,您需要使用双斜杠来转义点,因为dot将匹配正则表达式中的任何字符。另请注意,双反斜杠用于在正则表达式中创建单个反斜杠。
答案 1 :(得分:2)
String.split
采用正则表达式模式。 .
匹配正则表达式中的任何字符。所以你基本上是说“拆分这个字符串,将任何字符作为分隔符”。你想要:
String arr[] = dob.split("\\.");
...这实际上是\.
的正则表达式模式,其中反斜杠正在逃避点。对于字符串文字,反斜杠需要加倍,以便在Java编译器方面转义反斜杠。
或者,您可以使用
String arr[] = dob.split(Pattern.quote("."));
...或更好使用日期解析/格式化代码(例如SimpleDateFormat
或DateTimeFormatter
)来解析和格式化日期。毕竟,这就是它的用途 - 并且最好早点而不是迟到找到数据问题(例如“99.99.9999”)。
答案 2 :(得分:1)
在拆分功能中,请勿使用.
,因为它是正则表达式特殊字符,需要进行转义:\\.
您还可以使用
解析日期SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy");
String dateInString = "05.08.2010";
Date date = sdf.parse(dateInString);
修改强>
现在您可以使用(请参阅此thread)
来访问日/月/年Calendar cal = Calendar.getInstance();
cal.setTime(date);
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);
答案 3 :(得分:1)
如果您只想打印出来,也可以尝试
System.out.println(Arrays.toString(dob.split("\\.")));
System.out.println(dob.replace(".", ":"));