去掉字符串两端的全角空格和半角空格(含源代码)
2007-07-11 17:06:22
版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。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技术博客 |


su3390
博客统计信息
热门文章
最新评论
友情链接