字符串模糊查找

fyjin99 2007-08-28 10:59:11
各位大虾是否有字符串模糊查找的类或者方法,这里的模糊查找不同于一般意义上的模糊查找,例子如下:
字符串A: string
字符串B: string 1
字符串C: string1
则,在B中A是100%出现,在C中A是??%的出现,这里C中的string1和string相差一个字符有一定的类似,所以返回一个??%的形式。
...全文
424 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
fyjin99 2007-08-29
  • 打赏
  • 举报
回复
不好意思,我举的例子不太好。谢谢各位的解答。
它应该是具有一定容错的,不一定是最后一个字符不同。
例如:
string和atring,它们只有第一个字符s和a不同,这样也应该返回一个大于0的相似程度。
不知道有没有好的算法?
谢谢Chiyer(星羽)!
Supper_Jerry 2007-08-28
  • 打赏
  • 举报
回复
使用pkm算法 自己写一个吧。现成的貌似没有
coolFly19 2007-08-28
  • 打赏
  • 举报
回复
使用stl中的string or wstring find试试,找到了在判断下前后字符是否空格,
KenYuan2016 2007-08-28
  • 打赏
  • 举报
回复
其它教程-谈数据库中模糊数据的输入与判别

http://www.e2web.cn/temp/0006/20066142357547631.htm
KenYuan2016 2007-08-28
  • 打赏
  • 举报
回复
如果比较多的话可以用数据库来处理这种事情

select ,, from ,, where ,, like '%,,%'
星羽 2007-08-28
  • 打赏
  • 举报
回复
这样吗
星羽 2007-08-28
  • 打赏
  • 举报
回复
string -- string1 : 85%
string -- string 1 : 100%
请按任意键继续. . .
星羽 2007-08-28
  • 打赏
  • 举报
回复
#include "iostream"
#include "stdio.h"
#include "stdlib.h"


using namespace std;


float find_str( char src[], char sub[])
{
char* k = strstr(src, sub);

if (!k)
return 0.f;

k += strlen(sub);

if (*k == ' ' || *k == '\t' || *k == '\n' || *k == 0)
return 1.f;

char* t = strchr(k, ' ');

if (!t)
t = strchr(k, '\t');

if (!t)
t = strchr(k, '\n');

if (t)
return (float)strlen(sub) / (float)((t - k) + strlen(sub));
else
return (float)strlen(sub) / (float)(src + strlen(src) - k + strlen(sub));

}

int main(void)
{
char s0[] = "string";
char s1[] = "string1";
char s2[] = "string 1";

cout<<s0<<" -- "<<s1<<" : "<<(int)(find_str(s1, s0) * 100)<<"%"<<endl;
cout<<s0<<" -- "<<s2<<" : "<<(int)(find_str(s2, s0) * 100)<<"%"<<endl;
}
xugang_2001 2007-08-28
  • 打赏
  • 举报
回复
看了都没看懂,楼住到底什么意思,似乎有点模糊

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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