正则应用之字符串处理

8 篇文章 0 订阅

正则简直是对字符串处理最好用的方式,没有之一!!!

比如我有一个字符串,长成大概这个样子

String str = "yszf:7,tfzf:100,ptezf:68,caelzf:60,melabzf:84,tfjzf:900,tfky:20,tfxz:20,tfyd:20,tftl:20,ysky:6.5,ysxz:5.5,ysyd:6.5,ystl:6.5";

想要获取一个类型,是第一个zf或者yd或者tl或者xz或者ky前面的字符串,它可能是tf,可能是ys可能是pte可能是melab,在我不会用正则之前,我大概会这么写:

String typeStr = str.split(":")[0];
String type = "";
if(typeStr.contains("zf"))
{
 type = typeStr.split("zf")[0];
}
if(typeStr.contains("tl"))
{
 type = typeStr.split("tl")[0];
}
if(typeStr.contains("yd"))
{
 type = typeStr.split("yd")[0];
}
if(typeStr.contains("xz"))
{
 type = typeStr.split("xz")[0];
}
if(typeStr.contains("ky"))
{
 type = typeStr.split("ky")[0];
}

为啥不直接

String typeStr = str.split(":")[0];
String type = typeStr.substring(0,typeStr.length-2);

是因为这个字符串是举个栗子,还有可能尾缀是ybhx,zhtl……

但是!有了正则!这个代码只要两行!!

Pattern p = Pattern.compile("zf|yd|tl|xz|ky");
String type = p.split(str)[0];

尤其是 假如我的要获取类型的字符串长这样

String str = "actsx:20,actyy:20,actyd:20,acttl:20,actxz:20,satsx:500,satyd:500,satxz:470,ssat5sx:200,ssat5yd:200,ssat5ch:200,ssat8sx:200,ssat8yd:200,ssat8ch:200,gresx:150,greyd:160,grexz:150,gmatsx:51,gmatyd:50,gmatzhtl:50,mcatsw:1,mcattl:1,mcathx:1,mcatxw:1,datybhx:1,datyjhx:1,datswx:1,datgznlcs:1,datydlj:1,datdltl:1,datzrkx:1,adatcrt:1,adatbio:1,adatcli:1,adatdri:1,adatpepm:1,pcatsw:1,pcatyd:1,pcatsx:1,pcathx:1,pcatzh:1,pcatxz:1";

按照以前的写法我估计我能写哭,有了正则!只要两行!!

Pattern p = Pattern.compile("zf|sx|yy|yd|tl|xz|ch|sw|hx|xw|zhtl|ybhx|yjhx|swx|gznlcs|ydlj|dltl|zrkx|crt|bio|cli|dri|pepm|zh");
String type = p.split(str);

正则真好用啊 感动到哭泣有木有!!

同样适用于一段话截取每一句,可能有,或。或、等等标点符号。如果想要再原样拼接回去,我觉得大概是这个样子的。

while(strNew!=strYuan)
{
 strNew += strYuan.spilt(strNew[1].substring(0,1));
}

如果要对其中的每句话做处理,可能还需要依具体情况的while条件做处理。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值