字串如下:
店鋪 : *****商鋪*******
交易時間 : 2016-05-28 16:47:25
營業員 : 收銀員 : 張三
交易方式 : 銷售 單據號 : 6U4452800015
顧客卡號 : 2100*****9156
手機號碼 : 186****6500
統參考號 : 000628550564
---------------------購物明細--------------------
商品 數量 方式 單價 折扣 金額
16214503133311 1 1 658 100% 658.00
---------------------支付方式--------------------
總計 : 1 總金額 : 658.00
信用卡:658
店鋪 : *****商鋪*******
交易時間 : 2016-05-28 16:47:25
營業員 : 收銀員 : 張三
交易方式 : 銷售 單據號 : 6U4452800016
顧客卡號 : 2100*****9156
手機號碼 : 186****6500
系統參考號 : 000628550564
---------------------購物明細--------------------
商品 數量 方式 單價 折扣 金額
216214503133311 1 1 429 100% 429.00
---------------------支付方式--------------------
總計 : 1 總金額 : 429.00
信用卡:429
店鋪 : *****商鋪*******
交易時間 : 2016-05-28 16:47:25
營業員 : 收銀員 : 張三
交易方式 : 銷售 單據號 : 6U4452800017
顧客卡號 : 2100*****9156
手機號碼 : 186****6500
系統參考號 : 000628550564
---------------------購物明細--------------------
商品 數量 方式 單價 折扣 金額
216214503133311 1 1 958 100% 958.00
---------------------支付方式--------------------
總計 : 1 總金額 : 958.00
信用卡:958
需要將如上的字串中,提取【單據號 :】后面的12位字符,同時需要提取【總金額 :】后面的金額項,要將上面的字串轉換成如下的三條記錄:
6U4452800015 658.00
6U4452800016 429.00
6U4452800017 958.00
C#應該怎么實作呀。謝謝啦!
uj5u.com熱心網友回復:
用c#操作檔案,取每一行,再截取uj5u.com熱心網友回復:
string test = @"店鋪 : *****商鋪*******
交易時間 : 2016-05-28 16:47:25
營業員 : 收銀員 : 張三
交易方式 : 銷售 單據號 : 6U4452800015
顧客卡號 : 2100*****9156
手機號碼 : 186****6500
統參考號 : 000628550564
---------------------購物明細--------------------
商品 數量 方式 單價 折扣 金額
16214503133311 1 1 658 100% 658.00
---------------------支付方式--------------------
總計 : 1 總金額 : 658.00
信用卡:658
店鋪 : *****商鋪*******
交易時間 : 2016-05-28 16:47:25
營業員 : 收銀員 : 張三
交易方式 : 銷售 單據號 : 6U4452800016
顧客卡號 : 2100*****9156
手機號碼 : 186****6500
系統參考號 : 000628550564
---------------------購物明細--------------------
商品 數量 方式 單價 折扣 金額
216214503133311 1 1 429 100% 429.00
---------------------支付方式--------------------
總計 : 1 總金額 : 429.00
信用卡:429
店鋪 : *****商鋪*******
交易時間 : 2016-05-28 16:47:25
營業員 : 收銀員 : 張三
交易方式 : 銷售 單據號 : 6U4452800017
顧客卡號 : 2100*****9156
手機號碼 : 186****6500
系統參考號 : 000628550564
---------------------購物明細--------------------
商品 數量 方式 單價 折扣 金額
216214503133311 1 1 958 100% 958.00
---------------------支付方式--------------------
總計 : 1 總金額 : 958.00
信用卡:958";
Regex regOrder = new Regex("單據號 : (.+)");
MatchCollection matchOrder = regOrder.Matches(test);
Regex regMoney = new Regex("總金額 : (.+)");
MatchCollection matchMoney = regMoney.Matches(test);
StringBuilder sb = new StringBuilder();
MessageBox.Show(matchOrder.Count.ToString() + matchMoney.Count.ToString());
for (int i = 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();
uj5u.com熱心網友回復:
string txt = @"樓主 發表于: 2016-05-31 12:30:55
字串截取 字串如下:
店鋪 : *****商鋪*******
交易時間 : 2016-05-28 16:47:25
營業員 : 收銀員 : 張三
交易方式 : 銷售 單據號 : 6U4452800015
顧客卡號 : 2100*****9156
手機號碼 : 186****6500
統參考號 : 000628550564
---------------------購物明細--------------------
商品 數量 方式 單價 折扣 金額
16214503133311 1 1 658 100% 658.00
---------------------支付方式--------------------
總計 : 1 總金額 : 658.00
信用卡:658
店鋪 : *****商鋪*******
交易時間 : 2016-05-28 16:47:25
營業員 : 收銀員 : 張三
交易方式 : 銷售 單據號 : 6U4452800016
顧客卡號 : 2100*****9156
手機號碼 : 186****6500
系統參考號 : 000628550564
---------------------購物明細--------------------
商品 數量 方式 單價 折扣 金額
216214503133311 1 1 429 100% 429.00
---------------------支付方式--------------------
總計 : 1 總金額 : 429.00
信用卡:429
店鋪 : *****商鋪*******
交易時間 : 2016-05-28 16:47:25
營業員 : 收銀員 : 張三
交易方式 : 銷售 單據號 : 6U4452800017
顧客卡號 : 2100*****9156
手機號碼 : 186****6500
系統參考號 : 000628550564
---------------------購物明細--------------------
商品 數量 方式 單價 折扣 金額
216214503133311 1 1 958 100% 958.00
---------------------支付方式--------------------
總計 : 1 總金額 : 958.00
信用卡:958";
string pattern = @"(?<=單據號\s*:\s*)([^\n\r]*)[\s\S]*?總金額\s*:\s*([^\n\r]*)";
foreach (Match m in Regex.Matches(txt, pattern))
{
Console.WriteLine("單據號:{0} 總金額:{1}", m.Groups[1].Value, m.Groups[2].Value);
}
uj5u.com熱心網友回復:
m.Groups[1].Value, m.Groups[2].Value);如何繼續提取groups里的值?比如說我要用這個組里的第二個值?
uj5u.com熱心網友回復:
string text = @"店鋪 : *****商鋪*******交易時間: 2016 - 05 - 28 16:47:25
營業員: 收銀員: 張三
交易方式 : 銷售 單據號 : 6U4452800015
顧客卡號: 2100 * ****9156
手機號碼: 186 * ***6500
統參考號: 000628550564
-------------------- - 購物明細--------------------
商品 數量 方式 單價 折扣 金額
16214503133311 1 1 658 100 % 658.00
-------------------- - 支付方式--------------------
總計: 1 總金額: 658.00
信用卡: 658
店鋪: *****商鋪 * ******
交易時間 : 2016 - 05 - 28 16:47:25
營業員: 收銀員: 張三
交易方式 : 銷售 單據號 : 6U4452800016
顧客卡號: 2100 * ****9156
手機號碼: 186 * ***6500
系統參考號: 000628550564
-------------------- - 購物明細--------------------
商品 數量 方式 單價 折扣 金額
216214503133311 1 1 429 100 % 429.00
-------------------- - 支付方式--------------------
總計: 1 總金額: 429.00
信用卡: 429
店鋪: *****商鋪 * ******
交易時間 : 2016 - 05 - 28 16:47:25
營業員: 收銀員: 張三
交易方式 : 銷售 單據號 : 6U4452800017
顧客卡號: 2100 * ****9156
手機號碼: 186 * ***6500
系統參考號: 000628550564
-------------------- - 購物明細--------------------
商品 數量 方式 單價 折扣 金額
216214503133311 1 1 958 100 % 958.00
-------------------- - 支付方式--------------------
總計: 1 總金額: 958.00
信用卡: 958";
string oddNumber = "";
string money = "";
using (StringReader sr = new StringReader(text))
{
string line;
while ((line = sr.ReadLine()) != null)
{
if (line.IndexOf("單據號") !=-1)
{
Match match = Regex.Match(line, @"(\d|[a-zA-Z])+");
oddNumber = match.Value;
}
if (line.IndexOf("總金額") != -1)
{
Match match = Regex.Match(line, @"(\d+(\.\d+))");
money = match.Value;
}
if (!string.IsNullOrEmpty(oddNumber)&& !string.IsNullOrEmpty(money))
{
Console.WriteLine("{0} {1}", oddNumber, money);
oddNumber = money="";
}
}
}
uj5u.com熱心網友回復:
using System;
using System.Text.RegularExpressions;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
string txt = @"樓主 發表于: 2016-05-31 12:30:55
字串截取 字串如下:
店鋪 : *****商鋪*******
交易時間 : 2016-05-28 16:47:25
營業員 : 收銀員 : 張三
交易方式 : 銷售 單據號 : 6U4452800015
顧客卡號 : 2100*****9156
手機號碼 : 186****6500
統參考號 : 000628550564
---------------------購物明細--------------------
商品 數量 方式 單價 折扣 金額
16214503133311 1 1 658 100% 658.00
---------------------支付方式--------------------
總計 : 1 總金額 : 658.00
信用卡:658
店鋪 : *****商鋪*******
交易時間 : 2016-05-28 16:47:25
營業員 : 收銀員 : 張三
交易方式 : 銷售 單據號 : 6U4452800016
顧客卡號 : 2100*****9156
手機號碼 : 186****6500
系統參考號 : 000628550564
---------------------購物明細--------------------
商品 數量 方式 單價 折扣 金額
216214503133311 1 1 429 100% 429.00
---------------------支付方式--------------------
總計 : 1 總金額 : 429.00
信用卡:429
店鋪 : *****商鋪*******
交易時間 : 2016-05-28 16:47:25
營業員 : 收銀員 : 張三
交易方式 : 銷售 單據號 : 6U4452800017
顧客卡號 : 2100*****9156
手機號碼 : 186****6500
系統參考號 : 000628550564
---------------------購物明細--------------------
商品 數量 方式 單價 折扣 金額
216214503133311 1 1 958 100% 958.00
---------------------支付方式--------------------
總計 : 1 總金額 : 958.00
信用卡:958";
string pattern = @"(?<=單據號\s*:\s*)([^\n\r]*)[\s\S]*?總金額\s*:\s*([^\n\r]*)";
foreach (Match match in Regex.Matches(txt, pattern))
{
Console.WriteLine("單據號:{0}\t總金額:{1}", match.Groups[1].Value, match.Groups[2].Value);
}
}
}
}
uj5u.com熱心網友回復:
上面是 3#寫的,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/130351.html
標籤:C#
上一篇:WPF 列印條形碼出現虛線和鋸齒是什么原因?(個別電腦出現)
下一篇:為什么插入斷點不進入if陳述句
