求助,关于去除双字节空格问题 大家好:最近在做东西时遇到点问题,读取文本文件中的一行后,想用string.trim()去除首尾空格,可是发现无法去除,年个ultraedit一看,是个双字节的空格,请问各位有什么好的解决办法吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 那说明那个空格是全角的,而不是半角的。刚才我也试了一下,确实不一样。因此你可以把这个全角的转换成半角的就可以了,然后再用trim.() public class Test{ public static void main(String [] args) { String QJstr="HELLO"; String QJstr1="HELLO"; String result=BQchange(QJstr); String result1=QBchange(QJstr1); System.out.println(QJstr+"\n"+result); System.out.println(QJstr1+"\n"+result1); }//半角转全角 public static final String BQchange(String QJstr) { String outStr=""; String Tstr=""; byte[] b=null; for(int i=0;i<QJstr.length();i++) { try { Tstr=QJstr.substring(i,i+1); b=Tstr.getBytes("unicode"); } catch(java.io.UnsupportedEncodingException e) { e.printStackTrace(); } if (b[3] !=-1) { b[2]=(byte)(b[2]-32); b[3]=-1; try { outStr=outStr+new String(b,"unicode"); } catch(java.io.UnsupportedEncodingException e) { e.printStackTrace(); } } else outStr=outStr+Tstr; } return outStr; } //全角转半角 public static final String QBchange(String QJstr) { String outStr=""; String Tstr=""; byte[] b=null; for(int i=0;i<QJstr.length();i++) { try { Tstr=QJstr.substring(i,i+1); b=Tstr.getBytes("unicode"); } catch(java.io.UnsupportedEncodingException e) { e.printStackTrace(); } if (b[3] ==-1) { b[2]=(byte)(b[2]+32); b[3]=0; try { outStr=outStr+new String(b,"unicode"); } catch(java.io.UnsupportedEncodingException e) { e.printStackTrace(); } } else outStr=outStr+Tstr; } return outStr; }}输出结果为:HELLOHELLOHELLOHELLO 以上是一个全角和半角相互转换的函数以及相应的测试。在实际过程中,你可以把读取的每一行数据作为一个string 然后就调用上面的函数进行转换! 如果只是仅仅需要转化全角的空格的话,可以这样实现while ( (line = br.readLine() ) ! = null ) { line = line.replace((char)12288,' ') ;//全角空格转化成半角空格 line = line.trim() ;//即可却掉首尾全角半角空格} replaceAll(" ","");只要第一个参数是全角空格 去首尾空格,不管是全角半角:String str=" w w ";String newStr=str.replaceAll("(^[ | ]*|[ | ]*$)","");System.out.println(newStr); 回复人: jFresH_MaN(Contributing to Eclipse) ( ) 信誉:342 2005-10-22 16:34:06 得分: 0 replaceAll(" ","");只要第一个参数是全角空格 --------------------------------------------------------这样的话好像会把非首尾的全角空格也转化掉的 各位大手能为小弟解释下这个findOne方法吗?this又是代表什么意思? GridLayout布局的问题 java编写环境 pbm格式的文件怎么读呀? 即使是SQL NULL,ResultSet的getInt还是返回0?我该怎样区别对待? 初学者问程序出的问题! 关于排序! 请教所有人!!!来看看呀!谢谢!! java的一般性问题!! 如何将文件流转化为byte[]??? 送 100 分 !! eclipse中的import问题
刚才我也试了一下,确实不一样。
因此你可以把这个全角的转换成半角的就可以了,然后再用trim.()
{
public static void main(String [] args)
{
String QJstr="HELLO";
String QJstr1="HELLO";
String result=BQchange(QJstr);
String result1=QBchange(QJstr1);
System.out.println(QJstr+"\n"+result);
System.out.println(QJstr1+"\n"+result1);
}//半角转全角
public static final String BQchange(String QJstr)
{
String outStr="";
String Tstr="";
byte[] b=null; for(int i=0;i<QJstr.length();i++)
{
try
{
Tstr=QJstr.substring(i,i+1);
b=Tstr.getBytes("unicode");
}
catch(java.io.UnsupportedEncodingException e)
{
e.printStackTrace();
}
if (b[3] !=-1)
{
b[2]=(byte)(b[2]-32);
b[3]=-1;
try
{
outStr=outStr+new String(b,"unicode");
}
catch(java.io.UnsupportedEncodingException e)
{
e.printStackTrace();
}
}
else outStr=outStr+Tstr;
}
return outStr;
}
//全角转半角
public static final String QBchange(String QJstr)
{
String outStr="";
String Tstr="";
byte[] b=null; for(int i=0;i<QJstr.length();i++)
{
try
{
Tstr=QJstr.substring(i,i+1);
b=Tstr.getBytes("unicode");
}
catch(java.io.UnsupportedEncodingException e)
{
e.printStackTrace();
}
if (b[3] ==-1)
{
b[2]=(byte)(b[2]+32);
b[3]=0;
try
{
outStr=outStr+new String(b,"unicode");
}
catch(java.io.UnsupportedEncodingException e)
{
e.printStackTrace();
}
}
else outStr=outStr+Tstr;
}
return outStr;
}}输出结果为:HELLO
HELLO
HELLO
HELLO
在实际过程中,你可以把读取的每一行数据作为一个string 然后就调用上面的函数进行转换!
line = line.replace((char)12288,' ') ;//全角空格转化成半角空格
line = line.trim() ;//即可却掉首尾全角半角空格
}
只要第一个参数是全角空格
String str=" w w ";
String newStr=str.replaceAll("(^[ | ]*|[ | ]*$)","");
System.out.println(newStr);
replaceAll(" ","");
只要第一个参数是全角空格 --------------------------------------------------------这样的话好像会把非首尾的全角空格也转化掉的