有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从字符串值中获取特定的子字符串

我有以下日期:

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

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

有人能帮我做这个功能吗


共 (5) 个答案

  1. # 1 楼答案

    从末尾获取子字符串。而不是试图找出位置

    strCheck.substring(strCheck.length()-2);
    

    这将使用最后两个字符。然后只要做一个trim()以防它是单个字符来删除空格:-

    strCheck.substring(strCheck.length()-2).trim();
    

    备选方案

    前面提到的另一个选项是在String上做一个lastIndexOf(),用空格(“”)作为参数,从String的末尾向后搜索,直到找到空格为止。但是,由于数字总是可以在两个字符空间中提取,我认为没有理由每次要提取已知位置(length()-2)中的已知大小String(2)以检索您已经知道的位置时都进行两个字符比较

  2. # 2 楼答案

    你可以这样使用:

     String str = "Friday, January 31";
     Scanner s = new Scanner(s);
     s.useDelimiter( "\\D+" );
     while ( s.hasNextInt() ){
       s.nextInt(); // get int
     }
    
  3. # 3 楼答案

    作为@JigarJoshi answer的替代方法,如果您不介意,可以使用正则表达式,删除所有非数字字符

    String result = dateString.replaceAll("[^\\d]+","");
    
  4. # 4 楼答案

    如果您试图将字符串分成几个部分进行解析,我建议使用字符串。split(“”),看看javadocs和互联网上有很多很好的例子

  5. # 5 楼答案

    ^{}代替indexOf()

    final String str = "Friday, January 31";
    System.out.println(str.substring(str.lastIndexOf(" ")));