Java从字符串中提取整数、浮点型数值
public
class
Main
...
{
public static void main(String[] args)
...{
String str = "abc345def";
int i = getIntValue(str);
System.out.println(str+"->"+i);
String str2 = "abc345.678.91def";
double d = getDoubleValue(str2);
System.out.println(str2+"->"+d);
}
/** *//**
* 解析str,获得其中的整数
* @param str
* @return
*/
private static int getIntValue(String str)
...{
int r = 0;
if(str!=null && str.length()!=0)
...{
StringBuffer bf = new StringBuffer();
char[] chars = str.toCharArray();
for(int i=0;i<chars.length;i++)
...{
char c = chars[i];
if(c>='0' && c<='9')
...{
bf.append(c);
}
else if(c==',')
...{
continue;
}
else
...{
if(bf.length()!=0)
...{
break;
}
}
}
try
...{
r = Integer.parseInt(bf.toString());
}
catch(Exception e)
...{}
}
return r;
}
/** *//**
* 解析字符串获得双精度型数值,
* @param str
* @return
*/
private static double getDoubleValue(String str)
...{
double d = 0;
if(str!=null && str.length()!=0)
...{
StringBuffer bf = new StringBuffer();
char[] chars = str.toCharArray();
for(int i=0;i<chars.length;i++)
...{
char c = chars[i];
if(c>='0' && c<='9')
...{
bf.append(c);
}
else if(c=='.')
...{
if(bf.length()==0)
...{
continue;
}
else if(bf.indexOf(".")!=-1)
...{
break;
}
else
...{
bf.append(c);
}
}
else
...{
if(bf.length()!=0)
...{
break;
}
}
}
try
...{
d = Double.parseDouble(bf.toString());
}
catch(Exception e)
...{}
}
return d;
}
}
public static void main(String[] args)
...{
String str = "abc345def";
int i = getIntValue(str);
System.out.println(str+"->"+i);
String str2 = "abc345.678.91def";
double d = getDoubleValue(str2);
System.out.println(str2+"->"+d);
}
/** *//**
* 解析str,获得其中的整数
* @param str
* @return
*/
private static int getIntValue(String str)
...{
int r = 0;
if(str!=null && str.length()!=0)
...{
StringBuffer bf = new StringBuffer();
char[] chars = str.toCharArray();
for(int i=0;i<chars.length;i++)
...{
char c = chars[i];
if(c>='0' && c<='9')
...{
bf.append(c);
}
else if(c==',')
...{
continue;
}
else
...{
if(bf.length()!=0)
...{
break;
}
}
}
try
...{
r = Integer.parseInt(bf.toString());
}
catch(Exception e)
...{}
}
return r;
}
/** *//**
* 解析字符串获得双精度型数值,
* @param str
* @return
*/
private static double getDoubleValue(String str)
...{
double d = 0;
if(str!=null && str.length()!=0)
...{
StringBuffer bf = new StringBuffer();
char[] chars = str.toCharArray();
for(int i=0;i<chars.length;i++)
...{
char c = chars[i];
if(c>='0' && c<='9')
...{
bf.append(c);
}
else if(c=='.')
...{
if(bf.length()==0)
...{
continue;
}
else if(bf.indexOf(".")!=-1)
...{
break;
}
else
...{
bf.append(c);
}
}
else
...{
if(bf.length()!=0)
...{
break;
}
}
}
try
...{
d = Double.parseDouble(bf.toString());
}
catch(Exception e)
...{}
}
return d;
}
}
输出:
abc345def->345
abc345.678.91def->345.678