识别一个字符串中的数字

时间:2016-05-21 17:07:19

标签: java methods

我已经让这个方法过生日,但我想知道我是否可以在一个字符串中识别月份和日期的数字

例如

930421是正确的 931360不正确

print (mi)
   A      B      C
  AA    BB1 BB2 CC
0  1   text   5  7
1  2  text2   6  8
2  3  text3   7  9

cols = list(zip(si.columns, range(si.shape[1])))
si.columns = pd.MultiIndex.from_tuples(cols)
print (si)
       A   D  E
       0   1  2
0   text  T1  1
1  text2  T2  2
2  text3  T3  3

df = (pd.merge(mi,si, left_on=[('B','BB1'),('A','AA')], right_on=[('A', 0), ('E', 2)])
        .drop([('A', 0), ('E', 2)], axis=1))

print (df)
   A      B      C   D
  AA    BB1 BB2 CC   1
0  1   text   5  7  T1
1  2  text2   6  8  T2
2  3  text3   7  9  T3

3 个答案:

答案 0 :(得分:2)

您可以将SimpleDateFormatyyMMdd等模式一起使用。确保使用setLenient(false)使解析器“严格”,这样它实际上会在无效日期引发异常。

SimpleDateFormat format = new SimpleDateFormat("yyMMdd");
format.setLenient(false);

示例:

System.out.println(format.parse("930421"));
System.out.println(format.parse("931360"));

输出:

Wed Apr 21 00:00:00 CEST 1993
Exception in thread "main" java.text.ParseException: Unparseable date: "931360"
    at java.text.DateFormat.parse(DateFormat.java:366)
    at Test.main(Test.java:12)

你可以像这样使用它:

try {
    Date date = format.parse(dateString);
    System.out.println("Your birthday is " + date);
} catch (ParseException e) {
    System.out.println("That's not a date");
}

答案 1 :(得分:1)

这是你的答案。 它按照你的期望工作:)

static boolean dob = true;
public static void main(String[] args) {
    setFirst("931360", 0, 0, 0);
    setFirst("930421", 0, 0, 0);
}

public static void setFirst(String firstn, int y, int m,int d) {
    String first = firstn;
    if (first.length() == 6){
        y=Integer.parseInt(first.substring(0, 2));
        if(y<0 || y>99)
        {dob=false;}

        m=Integer.parseInt(first.substring(2, 4));
        if(m<1 || m>12)
        {dob=false;}

        d=Integer.parseInt(first.substring(4, 6));
        if(d<0 || d>31)
        {dob=false;}

        if(dob)
        {System.out.println("Your birthday is :" +first);}

    }if(!dob) {
        System.out.println("error");
    }
}

答案 2 :(得分:0)

假设您的日期格式为yy-mm-dd,您可以:(头脑简单但易于实施解决方案)

1)使用String.substring获取您需要的字符串片段(例如,yy的前两位数字),

2)用Integer.parseInt

解析一个整数

3)并根据范围检查它们(例如,对于yy,它可能在20到99之间)。

请注意,yy是一个非常容易出错的代表(例如1910和2010以相同的方式表示)所以你应该考虑使用yyyy。