对于此程序,系统要求用户输入“ 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
以及许多其他尝试。谢谢。
答案 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)
如果用户可以像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);
如果始终保留模式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