从字符串值中获取某些子字符串

时间:2014-01-06 16:23:43

标签: java android substring

我有以下日期:

"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(" ");

我现在被困住了,因为它怎么知道哪个是" "

有人可以帮我解决这个问题。

6 个答案:

答案 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
 }