这是场景。 用户输入 3 种类型的输入:
2013/1/1 12:00:00 AM_2013/31/5 12:00:00 AM
2013 年 1 月 1 日 12:00:00 AM_
_5/31/2013 12:00:00 上午
输入用于日期范围查询。
第一个输入:由 _ 分隔符分割:分为开始日期和结束日期。
第二个输入:用 _ 分隔符分割:输入仅是开始日期。
第三个输入:用 _ 分隔符分割:输入仅是结束日期。
输入通过通用返回类型检索。
if (StringUtils.endsWithIgnoreCase(searchKey, "date")) {
String dates[] = searchValue.split("_",-1);
if (dates [0] == null)
{
long epoch = System.currentTimeMillis()/1000;
String format = "MM/dd/yyyy HH:mm:ss aaa";
dates[0] = new
java.text.SimpleDateFormat(format).format(new java.util.Date (epoch*1000));
}
else if (dates [1] == null)
{
Date dNow = new Date( );
dates[1] = DateFormat.getInstance().format(dNow);
}
String start = dates[0];
String end = dates[1];
String format = AppConstant.DATE_FORMAT;
filters.add(String.format("%s between to_date('%s', '%s') and to_date('%s', '%s')", columnKey, start, format, end, format));
}
正如你所看到的,整个想法是:
- 如果用户没有输入开始日期,则纪元日期将用作开始日期。
- 如果用户没有输入最后日期,则当前日期n次将被用作结束日期。
但不幸的是,这个编码不起作用。我猜问题是 Split 不存储 NULL 值,因此 if 语句不起作用。
我对 java 还比较陌生,非常感谢任何帮助。
最佳答案
dates
不会有空条目,它将有空字符串条目。
System.out.println("_foo".split("_", -1)[0].equals(""));//true
因此,使用 String.equals
方法测试空字符串
if ("".equals(dates[0]) { ...
关于java - 字符串将空值拆分到数组中以使用 if 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17135958/