Java中从字符串中提取科学数字
我试图从字符串中提取科学数字。比如: String str=“值的名称1.111E-11下一个名称=444.4” 我想要的结果是: 结果:[1.111E-11444.4]Java中从字符串中提取科学数字,java,regex,Java,Regex,我试图从字符串中提取科学数字。比如: String str=“值的名称1.111E-11下一个名称=444.4” 我想要的结果是: 结果:[1.111E-11444.4] 请建议更好的解决方案。您可以使用扫描仪: String str = "Name of value 1.111E-11 Next Name= 444.4"; Scanner scanner = new Scanner(str); while (scanner.hasNext()) { if (scanner.hasN
请建议更好的解决方案。您可以使用扫描仪:
String str = "Name of value 1.111E-11 Next Name= 444.4";
Scanner scanner = new Scanner(str);
while (scanner.hasNext()) {
if (scanner.hasNextDouble()) {
System.out.println(scanner.nextDouble());
} else {
scanner.next();
}
}
将打印:
1.111E-11
444.4
默认情况下,扫描仪使用空格分隔符-这意味着它读取单词
next()
以字符串形式返回下一个单词,nextDouble()
获取下一个单词并尝试将其解析为double,因此如果单词不是数字,它将抛出异常。这就是为什么上面的示例使用hasNextDouble()
检查下一个单词是否是数字,如果不是,它只调用next()
并忽略结果。您可以使用scanner进行此操作:
String str = "Name of value 1.111E-11 Next Name= 444.4";
Scanner scanner = new Scanner(str);
while (scanner.hasNext()) {
if (scanner.hasNextDouble()) {
System.out.println(scanner.nextDouble());
} else {
scanner.next();
}
}
将打印:
1.111E-11
444.4
默认情况下,扫描仪使用空格分隔符-这意味着它读取单词
next()
以字符串形式返回下一个单词,nextDouble()
获取下一个单词并尝试将其解析为double,因此如果单词不是数字,它将抛出异常。这就是为什么上面的示例使用hasNextDouble()
检查下一个单词是否是数字,如果不是,它只调用next()
并忽略结果。您可以使用scanner进行此操作:
String str = "Name of value 1.111E-11 Next Name= 444.4";
Scanner scanner = new Scanner(str);
while (scanner.hasNext()) {
if (scanner.hasNextDouble()) {
System.out.println(scanner.nextDouble());
} else {
scanner.next();
}
}
将打印:
1.111E-11
444.4
默认情况下,扫描仪使用空格分隔符-这意味着它读取单词
next()
以字符串形式返回下一个单词,nextDouble()
获取下一个单词并尝试将其解析为double,因此如果单词不是数字,它将抛出异常。这就是为什么上面的示例使用hasNextDouble()
检查下一个单词是否是数字,如果不是,它只调用next()
并忽略结果。您可以使用scanner进行此操作:
String str = "Name of value 1.111E-11 Next Name= 444.4";
Scanner scanner = new Scanner(str);
while (scanner.hasNext()) {
if (scanner.hasNextDouble()) {
System.out.println(scanner.nextDouble());
} else {
scanner.next();
}
}
将打印:
1.111E-11
444.4
默认情况下,扫描仪使用空格分隔符-这意味着它读取单词
next()
以字符串形式返回下一个单词,nextDouble()
获取下一个单词并尝试将其解析为double,因此如果单词不是数字,它将抛出异常。这就是为什么上面的示例使用hasNextDouble()
检查下一个单词是否是数字,如果不是,它只调用next()
并忽略结果。您也可以使用下面的正则表达式
String s = "Name of value 1.111E-11 Next Name= 444.4";
Matcher m = Pattern.compile("(?<!\\S)\\d\\S*").matcher(s);
while(m.find())
{
System.out.println(m.group());
}
您也可以使用下面的正则表达式
String s = "Name of value 1.111E-11 Next Name= 444.4";
Matcher m = Pattern.compile("(?<!\\S)\\d\\S*").matcher(s);
while(m.find())
{
System.out.println(m.group());
}
您也可以使用下面的正则表达式
String s = "Name of value 1.111E-11 Next Name= 444.4";
Matcher m = Pattern.compile("(?<!\\S)\\d\\S*").matcher(s);
while(m.find())
{
System.out.println(m.group());
}
您也可以使用下面的正则表达式
String s = "Name of value 1.111E-11 Next Name= 444.4";
Matcher m = Pattern.compile("(?<!\\S)\\d\\S*").matcher(s);
while(m.find())
{
System.out.println(m.group());
}
在提问之前,请表现出一些努力。你试过什么?为什么不起作用?请在提问前表现出一定的努力。你试过什么?为什么不起作用?请在提问前表现出一定的努力。你试过什么?为什么不起作用?请在提问前表现出一定的努力。你试过什么?为什么不起作用?贴一张。