社区
C++ Builder
帖子详情
在文本文件中寻找匹配字符,送分!
flyflyflylflyfly
2003-04-21 09:07:23
各位高手,请问如何在程序执行过程中在指定的一批文本文件中找到给定的某些字符然后返回其位置。我想对一批文本文件进行操作比如在其中找到“姓名”字段然后就把后面的所有文字读出,遇到换行就重新寻找下一个给定字符。请各位高手指点!
...全文
57
18
打赏
收藏
在文本文件中寻找匹配字符,送分!
各位高手,请问如何在程序执行过程中在指定的一批文本文件中找到给定的某些字符然后返回其位置。我想对一批文本文件进行操作比如在其中找到“姓名”字段然后就把后面的所有文字读出,遇到换行就重新寻找下一个给定字符。请各位高手指点!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
竹背篼
2003-06-21
打赏
举报
回复
学习
clinton81
2003-06-21
打赏
举报
回复
顺便说一下,前几天做了个记事本(是我们的作业),用了BM算法,没有充分考虑中文问题(没时间考虑了),所以在“不区分大小写”搜索的时候会有中文字串误搜索的情况。现在有思路解决了,但没时间去改。
clinton81
2003-06-21
打赏
举报
回复
有两个方法:
一、用Memo1的自带搜索功能。用起来方便,但是体现不出你的水平。
二、自己写,使用一些成熟的搜索算法。如KMP或BM算法,其中BM算法优于KMP。
叶子哟
2003-06-21
打赏
举报
回复
看文件大不大了,不大的话,直接全读出来
看个正则的例子
TRegexp reg("[matq]");
unsigned int iS, iL;
iS= reg.find("01234567matq3456", &iL, 0);
ShowMessage(iS); //8
ShowMessage(iL);//1
叶子哟
2003-06-21
打赏
举报
回复
不知用正则表达式如何?
hong668
2003-06-21
打赏
举报
回复
同意:: BigFatBear(笨熊) ( )
用控件去做,如果想看不到隐藏就行了.
rebell
2003-06-21
打赏
举报
回复
现在没有cbuilder,但是我记得用indexof也可以,不过最好用Pos
好像是int SourceString.Pos(substring)。返回值是子字符串在源字符串中的位置。
还有一个字符串函数 StrPos(str1,str2),1为源,2为子字符串。
用以上的可以查出,以前也写过类似的。具体查查帮助或者有关文档就知道了
ljb198102
2003-04-23
打赏
举报
回复
\\纠正
字符串匹配算法(有复位法)
int pipai(long,short) \\如果查到匹配字符,则返回第一个匹配字符串首字符位置返回
\\返回-1
char long[100]\\原字符串
,short[5];\\目标字符串
{
int i,j;
i=j=0;
for (i=0;i<100;i++)
if (long[i]==short[j])
{
i++;
j++;
}
else if (i<96)
{
i=i-j+1;\\i 复位
j=0;\\j 复位
}
else
{
return -1;\\失败,返回-1
}
return (j-i+1);\\成功返回匹配首字符位置
}
效率很低!!!
仅供参考:
ljb198102
2003-04-23
打赏
举报
回复
字符串匹配算法(有复位法)
int pipai(long,short) \\如果查到匹配字符,则返回第一个匹配字符串首字符位置返回
\\返回-1
char long[100]\\原字符串
,short[5];\\目标字符串
{
int i,j;
i=j=0;
for (i=0;i<100;i++)
{
if (long[i]==short[j])
{
i++;
j++;
}
else if (i<96)
{
i=i-j+1;\\i 复位
j=0;\\j 复位
}
else
{
return -1;\\失败,返回-1
}
return (j-i+1);\\成功返回匹配首字符位置
}
效率很低!!!
仅供参考:
BigFatBear
2003-04-22
打赏
举报
回复
可以借有一下TMemo 控件
下面Memo1 是一个TMemo 实例(/对象 );
用
Memo1->Lines->LoadFromFile();
把文件内容装入,
然或借用控件的方法去查找吧!
也许能省一点劲!
SharpKing515
2003-04-21
打赏
举报
回复
不知道用这个行不行?
TStringList* pList = new TStringList;
pList->LoadFormFile("XXXXXX") ;
int nPos ;
AnsiString sTempStr ;
for(int i=0 ;i< pList->Count; ++i)
{
if((nPos=pList->IndexOf("姓名"))!=-1)
{
if(不等于换行)
{
.....
.....
}
....
.......
}
情况紧急。。。散人了先。不好意思。。。。
myy
2003-04-21
打赏
举报
回复
不逐行扫描,你如何"然后就把后面的所有文字读出,遇到换行...."
用fgets,做一个行号计数器,找到了,你直接把此行行号和内容输出出来就行了
小笨象
2003-04-21
打赏
举报
回复
对于每个文件来说,就必须逐行扫描,可以用fget取得每一行。
然后在取得的buffer中判断。
flyflyflylflyfly
2003-04-21
打赏
举报
回复
是逐个打开,不过真的要逐行扫描吗?
myy
2003-04-21
打赏
举报
回复
逐个文件打开,逐行扫描(xx电视机???)
flyflyflylflyfly
2003-04-21
打赏
举报
回复
好,我耐心等等吧,谢谢这位高手!
gdyt007
2003-04-21
打赏
举报
回复
這個是字符匹配的問題!
你等等!
我現在沒空幫你寫
有一個中英文問題
榜你up一下
很快就有高手來幫你的了!
耐心點
flyflyflylflyfly
2003-04-21
打赏
举报
回复
各位高手,响应一下吧!
200个经典C程序【源码】
172 删除
字符
串
中
的特定
字符
173 求解符号方程 174 计算标准差 175 求取符合特定要求的素数 176 统计符合特定条件的数 177
字符
串倒置 178 部分排序 179 产品销售记录处理 180 特定要求的
字符
编码 181 求解...
零基础Linux命令详细案例讲解课程(第3季)--文本搜索和文本处理
文本处理:行或者指定字段排序、去重复行、文本剪切、文本合并、文件比较、
字符
替换,学习本内容后学员可熟练掌握文本处理相关命令 课程特色: 笔记Linux命令:用200条笔记串连所有知识点,让学员从一点一滴积累,...
使用python实现查找
文本文件
中
的指定
字符
串
使用python实现查找
文本文件
中
的指定
字符
串。
【linux】删除文本
中
指定的
字符
串
需求:删除文本
中
只指定的
字符
串,但是往上大多数的答案都是删除指定
字符
串的行!的行!的行!我并不想删除这一行!直线删除这个
字符
串! 所以自己给研究了下,比如以下这个例子(文本名:test.txt): 我想把其
中
的...
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章