如何从包含数字,字符的字符串中获取整数?

时间:2018-07-17 15:13:46

标签: java string

我正试图从int中获得string(学生的序列号),看起来像是“ 122. Fardinabir 170213”,其中“ 122”是他的序列号。

在此之前,我尝试对nextInt()中的Scanner使用String方法,但是nextInt()无法完成这项工作。

然后我尝试了此过程...

import java.util.Scanner;
public class tempfile {
    public static void main(String[] args) {
        int serial_int = 0;
        String serial_st;
        serial_st =  find_serial("122. FardinAbir 170213") ;
        System.out.println(serial_st);
        serial_int = Integer.parseInt(serial_st);
        System.out.println(serial_int);
    }
    public static String find_serial(String st)
    {
        String[] parts = st.split(" ");   //  the first serial part will remain in parts[0]
        parts[0].replaceAll("[\\D]", ""); //  As I know it will remove non integer and the pure int serial will remain
        return parts[0];  
    }
}

但是replaceAll("[\\D]", "")无效...

任何人都可以帮助我解决这个问题或找到解决该问题的方法吗...

预先感谢...

4 个答案:

答案 0 :(得分:2)

假设您最终还希望获得字符串的其余部分,则可以使用Regex组

Python 3.5

nextInt()可能不起作用,因为扫描仪期望换行符分隔

答案 1 :(得分:2)

names

答案 2 :(得分:0)

自从您尝试使用nextInt以来,您似乎只希望使用前导数字,这意味着您可以使用以下正则表达式代码:

public static String find_serial(String st) {
    Matcher m = Pattern.compile("^\\d+").matcher(st);
    return (m.find() ? m.group() : null);
}

您也可以依靠以句号结尾的序列,尽管这不能验证序列是否为全数字:

public static String find_serial(String st) {
    int idx = st.indexOf('.');
    return (idx > 0 ? st.substring(0, idx) : null);
}

答案 3 :(得分:-2)

这将做:

public static int getSerialNumber() {
    String id = "122. Fardinabir 170213";
    int place = 0;
    for(int i = 0; i < id.length();i++) {
        if(id.charAt(i) == '.') {
            place = i;
            break;
        }
    }
    return Integer.parseInt(id.substring(0, place));
}

编辑:您也可以这样做:

public static int getSerialNumber(String name) {
    return Integer.parseInt(name.substring(0, name.indexOf('.')));
}

感谢@Andreas提供解决方案。