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文本 所以有点迷茫
...全文
458 21 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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)
免费Spire.PDF for .NET 是一款由e-iceblue公司开发的专业性的PDF文档创建组件。它能够使用户在不用Adobe Acrobat和其他外部控件的情况下,运用.NET 应用程序阅读,编写和操纵PDF 文档。Spire.PDF for .NET不仅可以运用在服端比如:ASP.NET 或者其他环境,还可以应用在Windows Forms 应用程序中。Spire.PDF for .NET 适合应用于所有常见的坏境中,比如:创建好的PDF文档可以存到磁盘中, 还可以在Windows Forms应用程序,ASP.NET 应用程序客户端浏览器中保存为数据流。 Spire.PDF for .NET 功能丰富。 除了基本的功能比如:绘制多种图形,图片,创建窗体字段,插入页眉页脚,输入数据表,自动对大型表格进行分页外,Spire.PDF for .NET还支持PDF数字签名,将HTML转换成PDF格式,提取PDF文档中的文本信息和图片,存为文本格式和各种图片格式,甚至可以将PDF中的附件提取出来。 主要功能 支持嵌入式字体,Truetype 字体和CJK字体。 支持绘图。比如:矩形,环形,弧形,椭圆形,也可以自定笔刷将其填充。 可以将图片从数据流,磁盘文件中载入到PDF 文档中。 在PDF 文档中既可以绘制梯状图形和矢量图像,还支持掩模和水印图像。 可以在PDF 文档中载入数据表。可以设置表中的行和列的格式,还可以在表内加入图形元素。 自动对PDF 中的大型表格进行分页。 创建窗体字段。比如在PDF 文档中创建按钮,文本框,列表框,复选框等等。 在PDF 中插入页眉页脚。 通过设置所有者密码和用户密码来加密PDF文档。 通过作者的签名来保护PDF文档。 读取当前PDF文档的表格并且填充表格。 HTML网页在转换到PDF文档时会拆分为多个大型页面,这些页面可以原原本本的展现在PDF文档中,而且在PDF文档的分页处没有任何文字的截断。用户还可以将这些网页在不需要临时文件的情况下,直接转换为数据流来创建PDF文档。

111,098

社区成员

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

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

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