正则 实现等长度的分割字符串

需求是,有一任意长度的字符串,要将其按每四个1组的等长度分割成一数组

实现过程是这样的:

  1. void Main()  
  2. {  
  3.     string str="afdsafasdfaaafddabadsdfdfd";  
  4.     var temp=Regex.Split(str,@"(?<=\G.{4})(?!$)");  
  5.     temp.ToList().ForEach(t=>Console.WriteLine(t));  
  6.       
  7.     /* 
  8.     afds 
  9.     afas 
  10.     dfaa 
  11.     afdd 
  12.     abad 
  13.     sdfd 
  14.     fd  
  15.     */  
  16. }  

 

现在需求变了:

  1. 02004019,07000778,IV00258,CM2321,EX02557,VA901PI,JZ3051AZ,07000778,NW8307,EQ00978,YM2321,……  
  2. //如上的一个字符串如何拆分成一行三个的形式  
  3. //最后一行可能是一个,或者两个  
  4. 02004019,07000778,IV00258  
  5. CM2321,EX02557,VA901PI  
  6. JZ3051AZ,07000778,NW8307  
  7. EQ00978,YM2321  

 

这样子的话,可以这样来实现:

  1. void Main()  
  2. {  
  3.     string str="02004019,07000778,IV00258,CM2321,EX02557,VA901PI,JZ3051AZ,07000778,NW8307,EQ00978,YM2321,";  
  4.     var temp=Regex.Split(str,@"(?<=\G(?:\w+[,,]){3})");  
  5.     temp.ToList().ForEach(t=>Console.WriteLine(t));  
  6.       
  7.     /* 
  8.     02004019,07000778,IV00258, 
  9.     CM2321,EX02557,VA901PI, 
  10.     JZ3051AZ,07000778,NW8307, 
  11.     EQ00978,YM2321,  
  12.     */  
  13. }  

 

之所以用 (?<=\G(?:\w+[,,]){3})  而 不用 (?<=\G(\w+[,,]){3}) 

是因为 如果在 Regex.Split 表达式中使用捕获组,则生成的字符串数组中会包含捕获组。

 

最后帖上  \G 的 MSDN解释:指定匹配必须出现在上一个匹配结束的地方。与 Match.NextMatch() 一起使用时,此断言确保所有匹配都是连续的。

转载于:https://www.cnblogs.com/szqizh/archive/2012/10/17/2728618.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值