java - 字符串将空值拆分到数组中以使用 if 语句

标签 java string split

这是场景。 用户输入 3 种类型的输入:

  1. 2013/1/1 12:00:00 AM_2013/31/5 12:00:00 AM
  2. 2013 年 1 月 1 日 12:00:00 AM_
  3. _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));
} 

正如你所看到的,整个想法是:

  1. 如果用户没有输入开始日期,则纪元日期将用作开始日期。
  2. 如果用户没有输入最后日期,则当前日期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/

相关文章:

arraylist - Kotlin 将 Arraylist 拆分为多个索引的部分

swift 3 : Fast file path separation

python - 替换部分字符串

java - 在 Java 中给定 JSON 路径/JSON 指针获取 JSON 文件的行号

java - Spring 3 - Petclinic - Tomcat 7 中的 ${owner.new} 无效表达式

java - 如何将字符串与字符串数组的特定部分进行比较?

c++ - 分隔字符串中的不同数据

java - 如何在 Netbeans 6.8 中为 JSF 1.2 中的 facelets 启用代码完成?

用于加载未运行的 GUI 的 Java 主类

c++ - Arduino (C/C++) 代码在 LCD 上显示数组内容