标题比较难理解,请见谅,谢谢。
假设我有一个这样的字符串: 1/1/2013 或 11/1/2013 或 11/12/2013 代表日期。
我想要的只是 /**/ 中间的字符串,表示月份。
我还没有尝试任何东西,因为我不知道在另一个字符串的中间得到一个字符串。
有人可以给我任何想法,或者如果您曾经解决过此类问题,请分享解决方案,在此先感谢。
只需使用split()
to split on /
,并取第二个值:
String date = "1/12/2013";
String month = date.split("/")[1];
SimpleDateFormat dateFormat = new SimpleDateFormat("MM");
System.out.println(dateFormat.format(new SimpleDateFormat("dd/MM/yyyy").
parse("11/12/2013")));
其他答案涵盖了大多数好的答案。另一种可能过度杀戮的方法是正则表达式
Pattern p = Pattern.compile("/.*/");
Matcher m = p.matcher("1/1/2013");
String month = m.group();
String date = "11/12/20113";
String month = date.substring(date.indexOf("/")+1, date.lastIndexOf("/"))
在这里,我们将第一个“/”的索引和第二个“/”的索引作为参数传递给 substring(),它将返回“/”和“/”之间的字符串,就像你问的那样!
try
String s = "1/12/2013";
String m = s.substring(s.indexOf('/') + 1, s.lastIndexOf('/'));
note that this is much more efficient than splitting, parsing or regex. No one extra object is created, even String.substring is special, it shares inner char buffer without copying.
You can split the string by the / character into an array like this:
String[] dateArray = date.split ("/");
The month is then the second element:
String month = dateArray[1];