Java 如何检查字符串是否包含数值
我想知道如何检查我的子字符串,如果它是一个数值,或者它只是一个单词 例如,如果我的子字符串d=150.63 我做了一些研究,发现Character.is Digit(),但它不起作用。下面是我到目前为止所做的代码Java 如何检查字符串是否包含数值,java,string,Java,String,我想知道如何检查我的子字符串,如果它是一个数值,或者它只是一个单词 例如,如果我的子字符串d=150.63 我做了一些研究,发现Character.is Digit(),但它不起作用。下面是我到目前为止所做的代码 import java.util.*; import java.io.*; public class Prac34 { private Scanner x; public void openFile(){ try{ x=new Scan
import java.util.*;
import java.io.*;
public class Prac34 {
private Scanner x;
public void openFile(){
try{
x=new Scanner(new File("sales.txt"));
}
catch (Exception e){
System.out.println("could not find file");
}
}
public void readFile(){
//int count=0;
double total=0;
while(x.hasNext()){
String a=x.nextLine();
int v=a.length();
int b=a.indexOf(':');
String c= a.substring(0,(b+1));
String d=a.substring((b+1),v);
double e= Double.parseDouble(d);
if (Character.isDigit(d)) {
total=total+e;
}
System.out.println(c);
System.out.println(d);
}
}
public void closeFile(){
x.close();
}
}
您可以尝试解析字符串:
try {
double e = Double.parseDouble(d);
total += e;
} catch (NumberFormatException ignore) {
// Not a number, skipping
}
使用正则表达式(正则表达式): 另外: 其中(?)表示无或一次 其中(*)表示一次或多次 其中(+)表示一次或多次
|||你可以成为一名专业人士,你应该认真研究好的变量命名约定。可能重复的只是使用a,我不确定我是否理解作为输入的字符串类型。以下哪项对您的用例有效<代码>字符串noNumbers=“待存或不待存”;带数字的字符串=“2B | |!2B”;字符串intNumber=“222”;字符串floatNumber=“22.2”代码>或者,您希望它们每个返回什么布尔值?例如,在一种情况下,d可能等于100,但可能等于“未找到任何记录”,因此我只是想知道如何使Character.isDigit在我的程序中工作?有什么想法吗?谢谢您不需要
字符。isDigit
-解析d
将抛出一个NumberFormatException
,您可以捕获并跳过它,如上所示。它是否适用于数字的十六进制表示?还是二进制的?或者即使使用1000
格式,您也可以使用正则表达式,但如果您要将其解析为double
,您也可以尝试按照@Mureinik的建议进行解析,并捕获NumberFormatException
来处理它是否为double
。
String text="25.54";
if(text.replace(".","").matches("[0-9]+")){ //or you can use also "\\d+"
System.out.println("digit");
}else{
System.out.println("no digit");
}
System.out.println(text);