如何解析此字符串中的年,月和日?

时间:2013-12-02 18:19:31

标签: java parsing

将目录名称指定为字符串,如下所示:

c:\can\be\anything\...\2013\12\01

或没有像'day'那样:

c:\can\be\anything\...\2011\10

如何轻松地将年,月和日解析为整数:

int iYear;
int iMonth;
int iDay;

非常感谢任何建议!

RH

5 个答案:

答案 0 :(得分:4)

基于Java 1.7 API:

String dir1 = "c:\\test1\\2013\\12\\01"; // c:\test1\2013\12\01
String dir2 = "c:\\test1\\2013\\10";     // c:\test1\2013\10

public void getDate(String dir) {
  String parts[] = (java.io.File.separatorChar == '\\' ? dir.split("\\\\") : dir.split("/"));
  int len = parts.length();
  if (len >= 3) {
    int iYear, iMonth, iDay;
    if (parts[len-2].length() == 4) {
      iYear = Integer.parseInt(parts[len-2]);
      iMonth = Integer.parseInt(parts[len-1]);
      iDay = 0;
    } else {
      iYear = Integer.parseInt(parts[len-3]);
      iMonth = Integer.parseInt(parts[len-2]);
      iDay = Integer.parseInt(parts[len-1]);
    }
  }
}

注意:

  • String的Split方法需要一个正则表达式字符串。由于目录名称的元素由反斜杠(\)分隔,因此您必须使用字符串的转义字符(\\),以及正则表达式的转义字符(\\\\)。
  • 第4行将检索操作系统的路径分隔符:Windows中的\,* nix中的/
  • 第7行将检查日期是第一种还是第二种形式。

答案 1 :(得分:1)

我将字符串拆分为'\',取最后三位,并指定值。

答案 2 :(得分:1)

    import java.lang.Number;
    import java.lang.String;
    import java.lang.StringBuffer;
    import java.util.Iterator;

    public class Test{
        private static String path = "c:\\can\\be\\anything\\...\\2013\\12\\01";
        public static void main(String[] args){
            String[] tmp = path.split("\\\\");
            if(tmp.length > 3){
                String day = tmp[tmp.length-1];
                String month = tmp[tmp.length-2];
                String year = tmp[tmp.length-3];

                System.out.println(day+" "+month+" "+year);
            }
        }
    }

答案 3 :(得分:1)

试试这个。

  公共课堂考试{

     

public static void main(String [] args){         // TODO自动生成的方法存根>

  String test = new String("c:\\can\\be\\anything\\test\\2013\\12\\01");
  System.out.println("test "+test);
  String[] result = test.split("\\\\");

    for(String s : result){
        System.out.println(">"+s+"<");
    }
     

}

     

}

答案 4 :(得分:0)

最简单的方法可能就是使用split(&#34; \&#34;)然后将字符串作为数组返回并抛出前n个元素,直到找到年份的元素。

String[] elements = requestUrl.split("\");

int yearIndex;
int monthIndex = yearIndex + 1;
int dayIndex = monthIndex + 1;

for (int i = 0; i < elements.length; i++){
    int value = Integer.parseInt(element);
    if (value > 1900){
        yearOffset = i;
        break;
    }
}
int year = Integer.parseInt(elements[yearIndex]);
int month = Integer.parseInt(elements[monthIndex]);
int day = Integer.parseInt(elements[dayIndex]);

如果你知道一年之前会有多少元素,你就不必扫描。