如果整个字符串中只有一个数字的话,那么这个程序应该没有什么问题!
StringSpilter ss=new StringSpilter("his age is 45"," ");//以空格切割
ss.workString();
boolean flag;
String section;
Enumeration enum=ss.m_vData.elements();
while(enum.hasMoreElements()){
section=(String)enum.nextElement();
flag=ss.isNumber(section);
if(flag)
break;
}
int age = Integer.parseInt(section);
System.out.println("age: "+age);/**
* 字符串切割器
*/
class StringSpilter{
String m_szString="";
String m_szSpilt="";
Vector m_vData; /**
* 构造函数
* @param str 字符串
* @param spilt 切割符
*/
public StringSpilter(String str,String spilt){
this.m_szString =str;
this.m_szSpilt =spilt;
} /**
* 进行切割
* @return 分割字符串
*/
public Vector workString(){
this.m_vData=new Vector();
if(this.m_szString.equals("")||this.m_szSpilt.equals(""))
return null;
StringTokenizer st=new StringTokenizer(this.m_szString ,this.m_szSpilt);
while (st.hasMoreTokens()) {
this.m_vData.add(((String)st.nextToken()).trim()) ;
}
return this.m_vData;
} protected boolean isNumber(Stirng Variable){
int pos=0;
boolean bNumber=true;//是纯数字
while((pos<Variable.length())&&(bNumber)){//数字常量
char ch=Variable.charAt(pos);
if(Character.isDigit(ch))
bNumber=true;
else
bNumber=false;
pos++;
}
return bNumber;
}}
public static void main(String[] args){
String resource="asdfsa45sadf23asdfsaf0.1";
Pattern p=Pattern.compile("(\\d+\\.\\d+)|(\\d+)");
Matcher m=p.matcher(resource);
while(m.find()){
System.out.println(m.group());
}
}
}
输出为
45
23
0.1分析出所有的整数,浮点数。简单写的没有考虑负数,改一下pattern就可以了