標簽:全角空格 半角空格 字符串兩端 trim
版權聲明:原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://su3390.blog.51cto.com/176528/33671
|
昨天,遇到了一個技術問題。本來我在程序中用的trim()方法來處理從JSP頁面傳來的值,后來在測試時,發現當我輸入的是全角空格時,trim()方法失效。
需求是這樣的,只是去掉字符串兩端的空格(不論是全角空格還是半角空格),字符串中間的空格不變。后來經過查資料和研究,總結出了以下兩種寫法:
一、字符串的字符替換法:
思路:(1)將字符串中所以有的全角空格轉換成兩個半角空格
(2)用trim()方法去掉字符串兩端的空格(此時全是半角空格)
(3)將兩個相鄰的半角合成一個全角
評價:這方法遇到字符串中間是半角+全角的時間,(3)步中有可能合并后,與原來
不一樣。
原代碼:
public String trim(String Str){
String newstr = Str.replaceAll(" "," "); newstr = newstr.trim(); newstr = newstr.replaceAll(" "," "); return newstr; } 二、正則表達式轉換法:
思路:利用正則表達式進行匹配替換。
評價:這應該是正統的解決之道
原代碼:
例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("[ ]+$", ""); } } 給大家一個綜合的測試類:
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,""); } } } } 如果你也遇到這樣的問題,希望以上的文字能幫助到你:),歡迎光臨我的博客!
本文出自 “蘭色的海洋” 博客,請務必保留此出處http://su3390.blog.51cto.com/176528/33671 本文出自 51CTO.COM技術博客 |