昨天,遇到了一个技术问题。本来我在程序中用的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,"");  
      } 
           }
   }  
}
如果你也遇到这样的问题,希望以上的文字能帮助到你:),欢迎光临我的博客!     

转载于:https://blog.51cto.com/su3390/33671

去掉字符串两端的全角空格和半角空格(含源代码)相关推荐

  1. java 正则表达式替换多个全角空格为一个半角空格_去掉字符串两端的全角空格和半角空格(含源代码)...

    昨天,遇到了一个技术问题.本来我在程序中用的trim()方法来处理从JSP页面传来的值,后来在测试时,发现当我输入的是全角空格时,trim()方法失效. 需求是这样的,只是去掉字符串两端的空格(不论是 ...

  2. 剔除半角字符和空格 java_去掉字符串中的全角,半角空格,回车,制表符

    package com.studyJava.stringStudy; import java.util.regex.Matcher; import java.util.regex.Pattern; p ...

  3. java全角字符转换为半角 半角转全角

    /// <summary>/// 判断字符是否英文半角字符或标点/// </summary>/// <remarks>/// 32 空格/// 33-47 标点// ...

  4. java 全角字符转半角字符

    public class Test { public static void main(String[] args) { String t="■ ■ffac●●△※○○☆№ccc" ...

  5. C#实现全角字符和半角字符转换

    本文转自: http://blog.csdn.net/wangchao1982/article/details/1857444,写的很好,直接转了,谢谢! 很多的朋友都在学习和工作中遇到过全角和半角的 ...

  6. php字符串处理之全角半角转换(正则匹配全角字符思路)

    半角全角的处理是字符串处理的常见问题,本文尝试为大家提供一个思路. 一.概念 全角字符unicode编码从65281~65374 (十六进制 0xFF01 ~ 0xFF5E)例如:/[\x{3010} ...

  7. php amp 字符串处理,php字符串处理之全角半角转换

    半角全角的处理是字符串处理的常见问题,本文尝试为大家提供一个思路. 一.概念 全角字符unicode编码从65281~65374 (十六进制 0xFF01 ~ 0xFF5E) 半角字符unicode编 ...

  8. PHP全角和半角字符怎么区分,php字符串处理之全角半角转换,php字符串全角半角_PHP教程...

    php字符串处理之全角半角转换,php字符串全角半角 半角全角的处理是字符串处理的常见问题,本文尝试为大家提供一个思路. 一.概念 全角字符unicode编码从65281~65374 (十六进制 0x ...

  9. php字符串里含有全角符号,php将字符串中全角字符转换为半角字符_PHP教程

    php将字符串中全角字符转换为半角字符 php将字符串中全角字符转换为半角字符,摘自ecshop. /** * 将一个字串中含有全角的数字字符.字母.空格或'%+-()'字符转换为相应半角字符 * @ ...

最新文章

  1. 【转】mysqldump的锁表的问题
  2. 1.2.2 OSI参考模型
  3. ES mapping可以修改include_in_all,也可以修改index_options,norm,但是无法修改_all属性!...
  4. 《应试教育洗礼的“好”学生的学习行为特征分析》 2019-11-02
  5. mysql datetime最小值_MySQL的5种时间类型的比较
  6. confluence启动不起来_汽车“一键启动”只用来点火?太浪费!你不知道的还有这3个功能...
  7. [python] 之 函数简介
  8. 关于泊松过程的参数估计
  9. 2019.7.1刷题统计
  10. 如何手动启动消防广播_怎样启动消防应急广播及求救系统?
  11. Varnish的vcl子程序
  12. Python 基础 —— sorted
  13. linux shell 脚本中 字符串截取并赋值引用
  14. 自行编译cups绕过错误:file /etc/rc.d/rc.local from install of systemd conflicts with file from
  15. 《数字电子技术基础》5.3/4/5 电平/脉冲/边沿触发的触发器
  16. autoit脚本实现电脑加域,退域,重加域
  17. c# .net对接企业微信小助手 接口请求时长预警
  18. 2013房价必然拉开大崩溃的序幕
  19. python--异常捕获
  20. linux c alarm系统调用入门

热门文章

  1. 提高IIS网站服务器的效率的八种方法 (转载)
  2. 结构成员访问的三种方法
  3. 使用 mkdocs 搭建个人 wiki 站点
  4. Python3中__init__.py文件介绍
  5. #每天一种设计模式# 观察者模式
  6. lua java 性能比较_Lua coroutine vs Java wait/notify
  7. workbench应力应变曲线_说说真应力真应变
  8. 安卓蓝牙键盘按键映射_双层按键功能自定义:魔蛋68蓝牙双模机械键盘体验
  9. 宁波大学计算机专业复试,2016年宁波大学信息科学与工程学院计算机专业考研复试题库. (1)...
  10. android默认exported_android:exported 属性详解