我正试图从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]", "")
无效...
任何人都可以帮助我解决这个问题或找到解决该问题的方法吗...
预先感谢...
答案 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提供解决方案。