问题描述
字符串如下:店铺:*****商铺*******交易时间:2016-05-2816:47:25营业员:收银员:张三交易方式:销售单据号:6U4452800015顾客卡号:2100*****9156手机号码:186****6500统参考号:000628550564---------------------购物明细--------------------商品数量方式单价折扣金额1621450313331111658100%658.00---------------------支付方式--------------------总计:1总金额:658.00信用卡:658店铺:*****商铺*******交易时间:2016-05-2816:47:25营业员:收银员:张三交易方式:销售单据号:6U4452800016顾客卡号:2100*****9156手机号码:186****6500系统参考号:000628550564---------------------购物明细--------------------商品数量方式单价折扣金额21621450313331111429100%429.00---------------------支付方式--------------------总计:1总金额:429.00信用卡:429店铺:*****商铺*******交易时间:2016-05-2816:47:25营业员:收银员:张三交易方式:销售单据号:6U4452800017顾客卡号:2100*****9156手机号码:186****6500系统参考号:000628550564---------------------购物明细--------------------商品数量方式单价折扣金额21621450313331111958100%958.00---------------------支付方式--------------------总计:1总金额:958.00信用卡:958需要将如上的字符串中,提取【单据号:】后面的12位字符,同时需要提取【总金额:】后面的金额项,要将上面的字符串转换成如下的三条记录:6U4452800015658.006U4452800016429.006U4452800017958.00C#应该怎么实现呀。谢谢啦!
解决方案
解决方案二:
用c#操作文件,取每一行,再截取
解决方案三:
stringtest=@"店铺:*****商铺*******交易时间:2016-05-2816:47:25营业员:收银员:张三交易方式:销售单据号:6U4452800015顾客卡号:2100*****9156手机号码:186****6500统参考号:000628550564---------------------购物明细--------------------商品数量方式单价折扣金额1621450313331111658100%658.00---------------------支付方式--------------------总计:1总金额:658.00信用卡:658店铺:*****商铺*******交易时间:2016-05-2816:47:25营业员:收银员:张三交易方式:销售单据号:6U4452800016顾客卡号:2100*****9156手机号码:186****6500系统参考号:000628550564---------------------购物明细--------------------商品数量方式单价折扣金额21621450313331111429100%429.00---------------------支付方式--------------------总计:1总金额:429.00信用卡:429店铺:*****商铺*******交易时间:2016-05-2816:47:25营业员:收银员:张三交易方式:销售单据号:6U4452800017顾客卡号:2100*****9156手机号码:186****6500系统参考号:000628550564---------------------购物明细--------------------商品数量方式单价折扣金额21621450313331111958100%958.00---------------------支付方式--------------------总计:1总金额:958.00信用卡:958";RegexregOrder=newRegex("单据号:(.+)");MatchCollectionmatchOrder=regOrder.Matches(test);RegexregMoney=newRegex("总金额:(.+)");MatchCollectionmatchMoney=regMoney.Matches(test);StringBuildersb=newStringBuilder();MessageBox.Show(matchOrder.Count.ToString()+matchMoney.Count.ToString());for(inti=0;i<matchOrder.Count;i++){sb.Append(matchOrder[i].Groups[1].Value.TrimEnd());sb.Append("");sb.Append(matchMoney[i].Groups[1].Value);}this.richTextBox1.Text=sb.ToString();
解决方案四:
stringtxt=@"楼主发表于:2016-05-3112:30:55字符串截取字符串如下:店铺:*****商铺*******交易时间:2016-05-2816:47:25营业员:收银员:张三交易方式:销售单据号:6U4452800015顾客卡号:2100*****9156手机号码:186****6500统参考号:000628550564---------------------购物明细--------------------商品数量方式单价折扣金额1621450313331111658100%658.00---------------------支付方式--------------------总计:1总金额:658.00信用卡:658店铺:*****商铺*******交易时间:2016-05-2816:47:25营业员:收银员:张三交易方式:销售单据号:6U4452800016顾客卡号:2100*****9156手机号码:186****6500系统参考号:000628550564---------------------购物明细--------------------商品数量方式单价折扣金额21621450313331111429100%429.00---------------------支付方式--------------------总计:1总金额:429.00信用卡:429店铺:*****商铺*******交易时间:2016-05-2816:47:25营业员:收银员:张三交易方式:销售单据号:6U4452800017顾客卡号:2100*****9156手机号码:186****6500系统参考号:000628550564---------------------购物明细--------------------商品数量方式单价折扣金额21621450313331111958100%958.00---------------------支付方式--------------------总计:1总金额:958.00信用卡:958";stringpattern=@"(?<=单据号s*:s*)([^nr]*)[sS]*?总金额s*:s*([^nr]*)";foreach(MatchminRegex.Matches(txt,pattern)){Console.WriteLine("单据号:{0}总金额:{1}",m.Groups[1].Value,m.Groups[2].Value);}