空間站

          北極心空

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks
          標簽:全角空格 半角空格 字符串兩端 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

          posted on 2007-11-23 09:33 蘆葦 閱讀(4064) 評論(0)  編輯  收藏 所屬分類: JAVA
          主站蜘蛛池模板: 偏关县| 英山县| 乌鲁木齐市| 蓬溪县| 长治市| 高青县| 泰兴市| 东城区| 黄浦区| 观塘区| 中牟县| 赞皇县| 尚志市| 上栗县| 江阴市| 栾川县| 麻城市| 双峰县| 平果县| 石阡县| 肃北| 高淳县| 九龙坡区| 大埔县| 女性| 会泽县| 大余县| 宁波市| 岐山县| 多伦县| 白河县| 南汇区| 汉源县| 康平县| 凤翔县| 石景山区| 利川市| 白玉县| 西昌市| 临沧市| 华宁县|