在做项目的过程中遇到了一个这样的问题,文字之间空格个数不等(如下图所示),String字符串自带的split()方法已经无法满足了,一时又找不到好的解决办法,于是乎我的程序就变成了这个尿性
public static String makeTextToDataBase(String str){
String newStr="";
String finalStr="";
for(int i=0;i<str.length();i++){
newStr+=str.substring(i,i+1).trim().equals("")==true?"@":str.substring(i,i+1);
}
for(int i=0;i<newStr.split("@").length;i++){
if(!newStr.split("@")[i].trim().equals("")){
finalStr+="'"+newStr.split("@")[i]+"',";
}
}
return finalStr.substring(0,finalStr.length()-1);
}
public static String remove(String resource,char ch)
{
StringBuffer buffer=new StringBuffer();
int position=0;
char currentChar;
while(position<resource.length())
{
currentChar=resource.charAt(position++);
if(currentChar!=ch) buffer.append(currentChar);
}
return buffer.toString();
}
费了老大的劲终于把问题解决了,但是这段程序也有一定的风险,如果要解析的字符串中出现了@字符,程序就抓瞎了。
不经意间发现了StringTokenizer,这个对于字符串中不规则的空格解析简直是太简单了,一句话完事,于是乎我的程序就变成了这样子的:
String s = new String(" 1 12 晴间多云 南转北 2、3 4 -6 ");
StringTokenizer st = new StringTokenizer(s);
System.out.println( "Token Total: " + st.countTokens() );
while(st.hasMoreElements()){
System.out.println( st.nextToken() );
};