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-很高兴我能提供帮助:PDoesScanner
存在于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
。我的意思是只包含一行新行