将含有任意标点符号的字符串以任何标点分割并转为List集合

程序员在开发中都离不开对字符串的操作,相信大家的StringUtils工具类里写了不少以某种字符分割字符串方法。

诸如:

 

那么有没有不用指定字符去分割的方法呢?

下面来分析分析:

方式一:通过枚举标点符号;但是这种方案过于死板不够灵活

方式二:通过正则;这种方法还行,但是不够骚

上面两种方案都被我否定之后,唯有ASCII码值被我相中了!

talk is cheap show the code :

    /** 
     *将含有任意中英文标点符号的字符串以任何标点分割并返回List集合
     *例如: splitWithAnyChracter("WX009R ;WX0082, ,sao*cao,zuo=666")
     *->
     *返回:[WX009R, WX0082, sao, cao, zuo, 666]
     *@param source 源字符串
     *@return List<String>
     *@author wuqx
     *@throws
     */
    public static List<String> splitWithAnyChracter(String source){
    	if (StringUtils.isBlank(source)) return null;
    	List<String> rs = new ArrayList<String> ();
    	try {
    		if(Utils.isChinese(source)){
    			source = StringUtils.full2HalfChange(source);
    		}
			char[] chars =  source.toCharArray();
			int k = 0 ;
			boolean flag = false;
			for(int i =0 ; i< chars.length ; i++){
				char c = chars[i];
				if(Integer.valueOf(c) != null && ((Integer.valueOf(c)>=32 && Integer.valueOf(c)<=47) || (Integer.valueOf(c)>=58 && Integer.valueOf(c)<=64)) ){
				    String niceStr = StringUtils.trim(StringUtils.substring(source, flag ? k+1 : k, i));
				    if(StringUtils.isNotBlank(niceStr)){
				    	rs.add(niceStr);
				    }
				    k = i;
				    flag = true;
				}
			}
			String lastChar = StringUtils.substring(source, flag ? k+1 : k, chars.length);
			if(StringUtils.isNotBlank(lastChar)){
				rs.add(lastChar);
			}
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
    	return rs;
    }

点我查看全角转半角方法:StringUtils.full2HalfChange(str)

测试代码及测试结果:

 

以后来的字符串还管他是用什么标点分割的呢,nice。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值