读书人

字符串模糊查找,该如何解决

发布时间: 2012-02-05 12:07:15 作者: rapoo

字符串模糊查找
各位大虾是否有字符串模糊查找的类或者方法,这里的模糊查找不同于一般意义上的模糊查找,例子如下:
字符串A: string
字符串B: string 1
字符串C: string1
则,在B中A是100%出现,在C中A是??%的出现,这里C中的string1和string相差一个字符有一定的类似,所以返回一个??%的形式。

[解决办法]
使用stl中的string or wstring find试试,找到了在判断下前后字符是否空格,
[解决办法]
使用pkm算法 自己写一个吧。现成的貌似没有
[解决办法]
看了都没看懂,楼住到底什么意思,似乎有点模糊
[解决办法]
#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;
}
[解决办法]
如果比较多的话可以用数据库来处理这种事情

select ,, from ,, where ,, like '%,,% '

读书人网 >C++

热点推荐