Java 从包含字母和数字的字符串中提取所有数字

Java 从包含字母和数字的字符串中提取所有数字,java,string,Java,String,我的作业很难从字符串中提取数字。我必须用两个字符串中的数字生成一个新的整数。例如: 字符串轴承='N30W' 然后我会有一个整数变量,输出'30' 到目前为止,我已经尝试: //digitsOfBearing = Integer.parseInt(bearing.replaceAll("[^0-9]", "")); //digitsOfBearing = Integer.parseInt(bearing.substring(1, bearing.length()-1)); //dig

我的作业很难从字符串中提取数字。我必须用两个字符串中的数字生成一个新的整数。例如:

字符串轴承='N30W'

然后我会有一个整数变量,输出'30' 到目前为止,我已经尝试:

  //digitsOfBearing = Integer.parseInt(bearing.replaceAll("[^0-9]", ""));
  //digitsOfBearing = Integer.parseInt(bearing.substring(1, bearing.length()-1));
  //digitsOfBearing = bearing.replaceAll("\\D+","");
但我所有的结果都以错误告终:

线程“main”java.lang.StringIndexOutOfBoundsException中出现异常:字符串索引超出范围:-2


谢谢

这样就行了

public static void main(String[] args) {
    String str = "1fnvkk14718jafds";
    String digits = getDigits(str);
    long number = Long.parseLong(digits);
    System.out.println(number);
}

private static String getDigits(String str) {
    StringBuilder stringBuilder = new StringBuilder();
    for (char c : str.toCharArray()) {
        if (Character.isDigit(c)) {
            stringBuilder.append(c);
        }
    }
    return stringBuilder.toString();
}
Integer.parseInt(bearing.replaceAll(“\\D”,“”“)
将起作用。“getDigits(str)”不是符号。