在程序中用的trim()方法來處理從JSP頁面?zhèn)鱽淼闹?后來在測試時(shí),發(fā)現(xiàn)當(dāng)我輸入的是全角空格時(shí),trim()方法失效。
需求是這樣的,只是去掉字符串兩端的空格(不論是全角空格還是半角空格),字符串中間的空格不變。后來經(jīng)過查資料和研究,總結(jié)出了以下兩種寫法:
一、字符串的字符替換法:
思路:(1)將字符串中所以有的全角空格轉(zhuǎn)換成兩個(gè)半角空格
?。?)用trim()方法去掉字符串兩端的空格(此時(shí)全是半角空格)
?。?)將兩個(gè)相鄰的半角合成一個(gè)全角
評(píng)價(jià):這方法遇到字符串中間是半角+全角的時(shí)間,(3)步中有可能合并后,與原來
不一樣。
原代碼:
public String trim(String Str){
String newstr = Str.replaceAll(" "," ");
newstr = newstr.trim();
newstr = newstr.replaceAll(" "," ");
return newstr;
}
二、正則表達(dá)式轉(zhuǎn)換法:
思路:利用正則表達(dá)式進(jìn)行匹配替換。
評(píng)價(jià):這應(yīng)該是正統(tǒng)的解決之道
原代碼:
例1:
public static String trims(String Str,String Flag) {
if (Str == null || Str.equals("")) {
return Str;
} else {
Str = ""+Str;
if( Flag == "l" || Flag == "L" )/*trim left side only*/
{
String RegularExp = "^[ ]+";
return Str.replaceAll(RegularExp,"");
}
else if( Flag == "r" || Flag == "R" )/*trim right side only*/
{
String RegularExp = "[ ]+$";
return Str.replaceAll(RegularExp,"");
}
else/*defautly, trim both left and right side*/
{
String RegularExp = "^[ ]+|[ ]+$";
return Str.replaceAll(RegularExp,"");
}
}
}
例2:
public static String trim(String str) {
if (str == null || str.equals("")) {
return str;
} else {
//return leftTrim(rightTrim(str));
return str.replaceAll("^[ ]+|[ ]+$","");
}
}
public static String leftTrim(String str) {
if (str == null || str.equals("")) {
return str;
} else {
return str.replaceAll("^[ ]+", "");
}
}
public static String rightTrim(String str) {
if (str == null || str.equals("")) {
return str;
} else {
return str.replaceAll("[ ]+$", "");
}
}
給大家一個(gè)綜合的測試類:
public class Test {
public static void main(String[] args) {
System.out.println("leftTrim:" + leftTrim(" 123 123 123 ") + ":");
System.out.println("rightTrim:" + rightTrim(" 123 123 123 ") + ":");
System.out.println("trim:" + trim(" 123 123 123 ") + ":");
System.out.println("leftTrim:" + trims(" 123 123 123 ","l") + ":");
System.out.println("rightTrim:" + trims(" 123 123 123 ","r") + ":");
System.out.println("trim:" + trims(" 123 123 123 ","a") + ":");
}
public static String trim(String str) {
if (str == null || str.equals("")) {
return str;
} else {
//return leftTrim(rightTrim(str));
return str.replaceAll("^[ ]+|[ ]+$","");
}
}
public static String leftTrim(String str) {
if (str == null || str.equals("")) {
return str;
} else {
return str.replaceAll("^[ ]+", "");
}
}
public static String rightTrim(String str) {
if (str == null || str.equals("")) {
return str;
} else {
return str.replaceAll("[ ]+$", "");
}
}
public static String trims(String Str,String Flag) {
if (Str == null || Str.equals("")) {
return Str;
} else {
Str = ""+Str;
if( Flag == "l" || Flag == "L" )/*trim left side only*/
{
String RegularExp = "^[ ]+";
return Str.replaceAll(RegularExp,"");
}
else if( Flag == "r" || Flag == "R" )/*trim right side only*/
{
String RegularExp = "[ ]+$";
return Str.replaceAll(RegularExp,"");
}
else/*defautly, trim both left and right side*/
{
String RegularExp = "^[ ]+|[ ]+$";
return Str.replaceAll(RegularExp,"");
}
}
}
}