我有以下日期:
"Friday, January 31",
"Wednesday, February 12",
"Monday, February 17",
"Wednesday, March 5",
我想设置一个字符串函数,我总是给出数字:
31
12
17
5
我开始使用这个功能:
String strCheck = suspendedDates[i];
int pos = strCheck.length();
int pos2 = strCheck.indexOf(" ");
我现在被困住了,因为它怎么知道哪个是" "
?
有人可以帮我解决这个问题。
答案 0 :(得分:4)
使用lastIndexOf()
代替indexOf()
final String str = "Friday, January 31";
System.out.println(str.substring(str.lastIndexOf(" ")));
答案 1 :(得分:2)
从最后获取子字符串。而不是试图找出位置
strCheck.substring(strCheck.length()-2);
这将取最后两个字符。然后只需要一个trim()
,以防它删除空格: -
strCheck.substring(strCheck.length()-2).trim();
<强>替代强>
提到的另一个选项是在lastIndexOf()
上用String
做一个空格(“”)作为参数,它将从String
的末尾向后搜索直到它找到空间。但由于数字总是可以在2个字符空间中提取,因此我认为没有理由每次要在已知位置(String
)中提取已知大小length()-2
(2)时进行2个字符比较为了检索您已经知道的位置。
答案 2 :(得分:2)
作为@JigarJoshi答案的替代方案,如果您不介意,可以使用正则表达式,删除所有非数字字符。
String result = dateString.replaceAll("[^\\d]+","");
答案 3 :(得分:2)
我必须发布它;因为这是一个日期,我会使用日期解析来允许额外检查输入的格式:
另一种方式:
SimpleDateFormat format = new SimpleDateFormat("EEEE, MMMM DD");
Calendar cal = Calendar.getInstance();
cal.setTime(format.parse("Friday, January 31"));
System.out.println(new SimpleDateFormat("DD").format(cal.getTime()));
使用第二个SimpleDateFormat("DD")
代替弃用getDate()
。
答案 4 :(得分:1)
如果你试图将字符串分成几部分进行解析,我建议使用String.split(“”),看看javadocs和互联网上有很多很好用的例子! :)
答案 5 :(得分:1)
您可以使用以下内容:
String str = "Friday, January 31";
Scanner s = new Scanner(s);
s.useDelimiter( "\\D+" );
while ( s.hasNextInt() ){
s.nextInt(); // get int
}