c# 关于txt文本数据的提取问题

cwb210 2009-01-16 12:26:30
private long GetNextWord(string strText, long istart, ref string strWord)
{
long i = 0;
string strTemp = null;
bool bBegin = false;

if (istart == strText.Length) return istart;

strTemp = "";
for (i = istart; i <= strText.Length; i++)
{
if (bBegin)
{
if (strText.Split(i,1) != " ")
{
strTemp = strTemp + Strings.Mid(strText, i, 1);
}
else
{
break;
}
}
else
{
if (Strings.Mid(strText, i, 1) != " ")
{
strTemp = Strings.Mid(strText, i, 1);
bBegin = true;
}
}
}
strWord = strTemp;
return i;
}

红色部分是不知道怎么修改的地方,是vb转换过来的,向改成。net的
要求是这样的
txt文本中有
xxxxxxxx aaaaaaaaa ooooooooo
xxxxxxxx aaaaaaaaa ooooooooo
xxxxxxxx aaaaaaaaa ooooooooo
xxxxxxxx aaaaaaaaa ooooooooo
要求分别提取 xxxxxxxx提取1 aaaaaaaaa提取2 ooooooooo提取3
求高手帮帮忙红色部分该怎么判断
第一次接触txt文本 所以有点迷茫
...全文
447 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
LIMINLY520 2011-07-02
  • 打赏
  • 举报
回复
顶一下……
xugh 2009-01-17
  • 打赏
  • 举报
回复
还是比较好判断的
从第四行取数据,到取道===为止
取道的数据如果开始是空格,则跳过
对取道的有效数据按" "split,取数组头3个

然后是你其他的业务处理
cwb210 2009-01-16
  • 打赏
  • 举报
回复
谢谢各位了 学习了
qhdrenzhijie 2009-01-16
  • 打赏
  • 举报
回复
lguo
睡神在睡觉 2009-01-16
  • 打赏
  • 举报
回复
用split切割字符串,将每行都切割,判断成员1的长度,卡号的长度肯定要比刷卡次数要少的多,这样你就有舍去的条件了,至于怎么切看你喜好了,上面几位说的很清楚了,切空格
止戈而立 2009-01-16
  • 打赏
  • 举报
回复
using System.Text.RegularExpressions;
Regex reg=new Regex(@"(?<CardNo>\d+)\s+(?<Money>\d+\.\d{2})\s+(?<Date>\d{8})\s+(?<Mno>\d{8})\s+(?<Sno>\d{12})\s+(?<Rate>\d+\.\d+%");
string result=string.Empty;
foreach(Match m in reg.Matches(strText))
{
result+=m.Groups["CardNo"].Value+" "+m.Groups["Money"].Value+" "+m.Groups["Date"].Value+" "+m.Groups["Mno"].Value+" "+m.Groups["Sno"].Value+" "+m.Groups["Rate"].Value+"\r\n";
}
cwb210 2009-01-16
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 zlb789 的回复:]
数据格式不清楚
不好整


[/Quote]
是txt的文本
jacklee_008 2009-01-16
  • 打赏
  • 举报
回复
定先
zlb789 2009-01-16
  • 打赏
  • 举报
回复
数据格式不清楚
不好整

cwb210 2009-01-16
  • 打赏
  • 举报
回复
01/04/09 工 行 内 卡 EDC 交 易 明 细
100104081200 99993844 xxxxxxxxxxxxxxxxxxx公司 106042-88000022922 3037381
卡号 消费金额 消费日期 终端机号 商户号
6221660009393399 436.00 20090103 31913008 100104081200 99.1000%
9559980030312211219 300.00 20090102 31913008 100104081200 99.1000%
4367450026525481 500.00 20090102 31913008 100104081200 99.1000%
4047380002669672 230.00 20081231 31913008 100104081200 99.1000%
5201690110572991 420.00 20090102 31913008 100104081200 99.1000%
5 1886.00 16.97 1869.03
4392257013554377 198.00 20090103 31913009 100104081200 99.1000%
6227001217530112137 296.00 20081230 31913009 100104081200 99.1000%
6227001216760030589 498.00 20090102 31913009 100104081200 99.1000%
4367450011420300 478.00 20090101 31913009 100104081200 99.1000%
6225220100157569 248.00 20090103 31913009 100104081200 99.1000%
4047380035615106 57.00 20090103 31913009 100104081200 99.1000%
6 1775.00 15.96 1759.04
4392260800412650 602.00 20090103 31913010 100104081200 99.1000%
4392250014673304 238.00 20081231 31913010 100104081200 99.1000%
4518110348416698 919.00 20081231 31913010 100104081200 99.1000%
4392250007430274 1152.00 20081231 31913010 100104081200 99.1000%
4367450014914572 298.00 20081231 31913010 100104081200 99.1000%
4367480010947755 298.00 20081231 31913010 100104081200 99.1000%
3568891107436560 345.00 20090101 31913010 100104081200 99.1000%
4581230140695885 366.00 20090101 31913010 100104081200 99.1000%
4063651357753751 912.00 20081231 31913010 100104081200 99.1000%
4047380005561207 228.00 20090102 31913010 100104081200 99.1000%
5201521350413374 674.00 20090103 31913010 100104081200 99.1000%
6221550100258163 1142.00 20081231 31913010 100104081200 99.1000%
4047380034876303 400.00 20090101 31913010 100104081200 99.1000%
6013820800071984528 266.00 20090101 31913010 100104081200 99.1000%
5218990111067616 228.00 20090101 31913010 100104081200 99.1000%
4392267005922961 516.00 20090101 31913010 100104081200 99.1000%
4047380033745202 376.00 20090102 31913010 100104081200 99.1000%
4581230110692938 323.00 20090102 31913010 100104081200 99.1000%
4047390067874331 476.00 20090102 31913010 100104081200 99.1000%
19 9759.00 87.81 9671.19
4270308100012840 148.00 20090103 31913013 100104081200 99.1000%
4367450024900439 603.00 20090103 31913013 100104081200 99.1000%
4270308100012840 228.00 20090101 31913013 100104081200 99.1000%
4270308100012840 148.00 20090101 31913013 100104081200 99.1000%
6227001215560076784 150.00 20090101 31913013 100104081200 99.1000%
4047390067084113 436.00 20090101 31913013 100104081200 99.1000%
5268550006403513 436.00 20081231 31913013 100104081200 99.1000%
4563510800020369608 236.00 20090101 31913013 100104081200 99.1000%
8 2385.00 21.45 2363.55
5184763104096763 690.00 20081231 31913014 100104081200 99.1000%
6222001001115250756 200.00 20081231 31913014 100104081200 99.1000%
5201088001757062 320.00 20090101 31913014 100104081200 99.1000%
3 1210.00 10.89 1199.11
4047390006532172 33.00 20081231 31913015 100104081200 99.1000%
4367480002647637 288.00 20090101 31913015 100104081200 99.1000%
2 321.00 2.89 318.11
6222001001111013620 333.00 20090103 31913016 100104081200 99.1000%
6221883020005375346 95.00 20081231 31913016 100104081200 99.1000%
6221883020005375346 1.00 20081231 31913016 100104081200 99.1000%
6222021001022113093 200.00 20090101 31913016 100104081200 99.1000%
5218990113505506 472.00 20090101 31913016 100104081200 99.1000%
6222021001018864451 62.00 20090102 31913016 100104081200 99.1000%
6222001001101122795 69.00 20090102 31913016 100104081200 99.1000%
6222600110017425955 99.00 20090102 31913016 100104081200 99.1000%
4062522701765364 335.00 20090102 31913016 100104081200 99.1000%
6228480030531059811 278.00 20090102 31913016 100104081200 99.1000%
6222001001118452458 70.00 20090102 31913016 100104081200 99.1000%
6222300353058905 469.00 20090103 31913016 100104081200 99.1000%
12 2483.00 22.34 2460.66
6225757500473674 209.00 20090103 31913017 100104081200 99.1000%
1 209.00 1.88 207.12
6222300104962827 32.00 20090103 31913018 100104081200 99.1000%
4563510800024433822 208.00 20081231 31913018 100104081200 99.1000%
4218709901711297 694.00 20081231 31913018 100104081200 99.1000%
6226000003969750 484.00 20081231 31913018 100104081200 99.1000%
5324585010020111 326.00 20090101 31913018 100104081200 99.1000%
5 1744.00 15.70 1728.30
========================================================================================
Total 115 60355.00 543.09 59811.91
如对交易明细有疑问, 请来电查询63748335, 或发传真63748336.
止戈而立 2009-01-16
  • 打赏
  • 举报
回复
你给出实际数据再给你写啦,这样写出来的正则才比较准确
cwb210 2009-01-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 min_jie 的回复:]
有固定格式的数据是非常好取的,最后一行取出来的数据不要就是了。
[/Quote]
不是最后一行才是这样
xxxxxxxxxx aaaaaaaaaaaa oooooooooooo ssssssssss

xxxxxxxxxx aaaaaaaaaaaa oooooooooooo ssssssssss

xxxxxxxxxx aaaaaaaaaaaa oooooooooooo ssssssssss
zzzzzzzzzz zzzzzzzzzzz zzzzzzzz
xxxxxxxxxx aaaaaaaaaaaa oooooooooooo ssssssssss

xxxxxxxxxx aaaaaaaaaaaa oooooooooooo ssssssssss

xxxxxxxxxx aaaaaaaaaaaa oooooooooooo ssssssssss
zzzzzzzzzz zzzzzzzzzzz zzzzzzzz
xxxxxxxxxx aaaaaaaaaaaa oooooooooooo ssssssssss
xxxxxxxxxx aaaaaaaaaaaa oooooooooooo ssssssssss
xxxxxxxxxx aaaaaaaaaaaa oooooooooooo ssssssssss
xxxxxxxxxx aaaaaaaaaaaa oooooooooooo ssssssssss 这中间不固定行

xxxxxxxxxx aaaaaaaaaaaa oooooooooooo ssssssssss

xxxxxxxxxx aaaaaaaaaaaa oooooooooooo ssssssssss
zzzzzzzzzz zzzzzzzzzzz zzzzzzzz
--------------------------------------------------------------------------------------------
这下面又是一个总结
止戈而立 2009-01-16
  • 打赏
  • 举报
回复
有固定格式的数据是非常好取的,最后一行取出来的数据不要就是了。
cwb210 2009-01-16
  • 打赏
  • 举报
回复
还有,文本中不是都一样的
比方
xxxxxxxxxx aaaaaaaaaaaa oooooooooooo ssssssssss

xxxxxxxxxx aaaaaaaaaaaa oooooooooooo ssssssssss

xxxxxxxxxx aaaaaaaaaaaa oooooooooooo ssssssssss
zzzzzzzzzz zzzzzzzzzzz zzzzzzzz 这行是总结,是不需要放到数据库的,主要就是这么一样格式循环 几行数据一行总结
cwb210 2009-01-16
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 min_jie 的回复:]
根本不用这么麻烦,一句就能搞定:
C# codestring[] strs=strText.split('');
[/Quote]
不需要与vb一样判断吗?
cwb210 2009-01-16
  • 打赏
  • 举报
回复
一行中间没有分隔符 ,只是空格
而且也不单单是数据,有没用的标题和结尾的,所以需要if判断,不过这只要是判断末尾是否为空,空就返回一个数据并提取,再继续循环提取 直道一行都取出,
止戈而立 2009-01-16
  • 打赏
  • 举报
回复
考虑到回车换行,可以用:
string[] strs=System.Text.RegularExpressions.Regex.Split(strText,@"\s+");
止戈而立 2009-01-16
  • 打赏
  • 举报
回复
根本不用这么麻烦,一句就能搞定:
string[] strs = strText.split(' ');
HDNGO 2009-01-16
  • 打赏
  • 举报
回复
mid-->Substring
xiaojin0710 2009-01-16
  • 打赏
  • 举报
回复
学习,帮顶
加载更多回复(1)

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧