将MM / DD / YYYY转换为子字符串

时间:2018-10-30 17:31:37

标签: java

对于此程序,系统要求用户输入“ mm / dd / yyyy”形式的数据,而我正在尝试使用带有参数“ /”的indexOf()方法将日期字符串拆分为三个子字符串。我不能使用.split()方法。我只需要使用2次调用indexOf(“ /”)和4次调用substring()

我尝试这样做:

String monthString = dateString.substring(0,dateString.indexOf("/"));
String dayString = 
dateString.substring(dateString.indexOf("/"),DateString.indexOf("/")+1

以及许多其他尝试。谢谢。

4 个答案:

答案 0 :(得分:1)

每个indexOf方法都有一个重载,您可以在其中提供要搜索的索引,这使您可以通过提供上一个索引/来查找下一个dateString.indexOf("/", prevIndex + 1)

答案 1 :(得分:0)

您至少有两个选择:

1-仅使用子字符串
假设格式始终为“ dd / MM / yyyy”,则可以使用:

String t = "30/10/2018";
String[] result = new String[] { t.substring(0, 2), 
                   t.substring(3, 5), t.substring(6) };

2-{{​​1}}和indexOf
如果输入的数字可能连续数月或数天,则可以使用:

substring

以上两项均返回int firstSlash = t.indexOf("/"); int secondSlash = t.indexOf("/", firstSlash + 1); String[] result2 = { t.substring(0, firstSlash), t.substring(firstSlash + 1, secondSlash), t.substring(secondSlash + 1) };

答案 2 :(得分:0)

有2个电话indexOf()和4个电话substring(),因此您的老师很高兴:

    String dateString= "11/25/2018";

    int first = dateString.indexOf("/");

    String dayWithYear = dateString.substring(first + 1);
    int last = dayWithYear.indexOf("/");

    String monthString = dateString.substring(0, first);
    String dayString = dayWithYear.substring(0, last);
    String yearString = dayWithYear.substring(last + 1);

    System.out.println(monthString);
    System.out.println(dayString);
    System.out.println(yearString);

打印:

11
25
2018

首先找到第一个/的索引,然后使用它来提取月份。
然后获取字符串的其余部分,并找到第二个/的索引,并使用它来提取日期和年份。

答案 3 :(得分:-1)

  1. 如果用户可以像5/2/2018一样输入,则需要使用/索引:找到第一个索引,然后在第一个索引之后查找第二个索引:

    String dateString = "mm/dd/yyyy";
    int firstSlash  = dateString.indexOf("/");
    int secondSlash = dateString.indexOf("/", firstSlash + 1); // start search after first
    
    String month = dateString.substring(0, firstSlash);
    String day   = dateString.substring(firstSlash + 1, secondSlash);
    String year  = dateString.substring(secondSlash + 1);
    
    System.out.println(month + "-" + day + "-" + year);
    

  1. 如果始终保留模式mm/dd/yyyy,则可以将索引用作ints

    String dateString = "mm/dd/yyyy";
    String month = dateString.substring(0, 2);
    String day = dateString.substring(3, 5);
    String year = dateString.substring(7, 10);
    System.out.println(month + "-" + day + "-" + year);  // mm-dd-yyyy