Java 从字符串中提取整数

Java 从字符串中提取整数,java,android,string,Java,Android,String,在我的应用程序中,我得到一个字符串。例如: "1 \n2 4 \n18 \n 3 20 12 \n 4\n23" 我想从字符串中得到所有整数,比如 1,2,4,18,3,20,12,4,23. 我不能使用string.split。除了数字(字符串中的新行字符和空格)外,只有2个字符 提前感谢:)您可以将正则表达式与\\d+一起使用 public static void main(String[] args) { String s = "1 \n2 4 \n18 \n 3 20 12

在我的应用程序中,我得到一个字符串。例如:

"1 \n2 4 \n18 \n 3 20 12 \n 4\n23"
我想从字符串中得到所有整数,比如

1,2,4,18,3,20,12,4,23.
我不能使用
string.split
。除了数字(字符串中的新行字符和空格)外,只有2个字符


提前感谢:)

您可以将正则表达式与
\\d+
一起使用

public static void main(String[] args) {
    String s = "1 \n2 4 \n18 \n 3 20 12 \n 4\n23";
    Pattern p = Pattern.compile("\\d+");
    Matcher m = p.matcher(s);
    while (m.find()) {
        System.out.println(m.group());
    }
}
O/p:


您可以将正则表达式与
\\d+
一起使用

public static void main(String[] args) {
    String s = "1 \n2 4 \n18 \n 3 20 12 \n 4\n23";
    Pattern p = Pattern.compile("\\d+");
    Matcher m = p.matcher(s);
    while (m.find()) {
        System.out.println(m.group());
    }
}
O/p:


假设您的文本(和空白)中只有整数(范围为-2147483648和2147483647),您可以轻松使用
Scanner

String input = "1 \n2 4 \n18 \n 3 20 12 \n 4\n23";
Scanner sc = new Scanner(input);
while(sc.hasNextInt())
    System.out.println(sc.nextInt());

对于超出这些范围的数字,可以使用
nextLong
nextbiginger
。但是,如果您对返回实际类型不感兴趣,并且可以将它们作为
字符串
使用,那么只需使用
next
,假设文本(和空格)中只有整数(范围-2147483648和2147483647),就可以轻松地使用
扫描仪

String input = "1 \n2 4 \n18 \n 3 20 12 \n 4\n23";
Scanner sc = new Scanner(input);
while(sc.hasNextInt())
    System.out.println(sc.nextInt());

对于超出这些范围的数字,可以使用
nextLong
nextbiginger
。但是,如果您对返回实际类型不感兴趣,并且可以将它们作为
String
使用,那么您只需使用
next

即可在Android上使用StringTokenizer

StringTokenizer tokens = new StringTokenizer(yourString, "\\n");

您可以使用StringTokenizer在Android上执行此操作

StringTokenizer tokens = new StringTokenizer(yourString, "\\n");

除了上面的图案/匹配器回复之外

如果您只想使用拆分,这将起作用:

String str = "1 \n2 4 \n18 \n 3 20 12 \n 4\n23";
StringBuffer bfr = new StringBuffer();
for (String splitStr: str.split("[\\n\\s]+")){
    bfr.append("," + splitStr);
}
System.out.println(bfr.toString().substring(1));
}
或使用标记器:

String str = "1 \n2 4 \n18 \n 3 20 12 \n 4\n23";
StringTokenizer strToken = new StringTokenizer(str, "[\n ]+");
StringBuffer bfr = new StringBuffer();
while (strToken.hasMoreElements()){
    bfr.append("," + strToken.nextElement().toString());
}
System.out.println(bfr.toString().substring(1));
}

除了上面的图案/匹配器回复之外

如果您只想使用拆分,这将起作用:

String str = "1 \n2 4 \n18 \n 3 20 12 \n 4\n23";
StringBuffer bfr = new StringBuffer();
for (String splitStr: str.split("[\\n\\s]+")){
    bfr.append("," + splitStr);
}
System.out.println(bfr.toString().substring(1));
}
或使用标记器:

String str = "1 \n2 4 \n18 \n 3 20 12 \n 4\n23";
StringTokenizer strToken = new StringTokenizer(str, "[\n ]+");
StringBuffer bfr = new StringBuffer();
while (strToken.hasMoreElements()){
    bfr.append("," + strToken.nextElement().toString());
}
System.out.println(bfr.toString().substring(1));
}

为什么不能使用
String.split()
函数?Android的java实现中没有split为什么不能使用
String.split()
function?Android的java中没有拆分implementation@isht-很高兴我能帮上忙:P@isht-很高兴我能提供帮助:PDoes
Scanner
存在于Android中?@BuhakeSindi我没有检查,但它是
java.util
的一部分,所以我不认为有任何理由不将其包含在Android中(OP接受这个答案的事实也让我觉得它在Android上起作用了)。@BuhakeSindi这份文档声称Android上存在扫描仪。
Scanner
在Android上存在吗?@BuhakeSindi我没有检查,但它是
java.util
的一部分,所以我看不出有任何理由不把它包括在Android上(OP接受这个答案的事实也让我觉得它在Android上起作用了)。@BuhakeSindi这份文档声称扫描仪存在于Android上。
“\n”
将被视为新行。
“\\n”
将识别字符串文字
\n
。我的意思是只有
“\n”
新行才会被视为新行。
“\\n”
将标识字符串文字
\n
。我的意思是只包含一行新行