| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 913 人关注过本帖
标题:求:关于含有通配符的字符串比较
只看楼主 加入收藏
xike
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-4-25
收藏
 问题点数:0 回复次数:7 
求:关于含有通配符的字符串比较

我想看一个字符串(含有?*,与文曲星类似)与另一个普通字符串是否匹配,
如cl*k 与 clock 是匹配的。
有好的算法吗?
或者现成的函数,最好给个例子
谢谢。
关于正则表达式,个人感觉过于复杂繁琐,如果可以给个例子也很感谢:)

搜索更多相关主题的帖子: 通配符 字符 文曲星 例子 clock 
2006-04-25 22:22
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 

#include<stdio.h>
#include<string.h>
main()
{
char *p1=NULL,str[10]={'\0'},*p2=NULL,str2[10]={'\0'};
int i,flag=0;
printf("the first string:");
gets(str);
printf("the second string:");
gets(str2);
if(strlen(str)-strlen(str2))
flag=1;
else
{
p1=str;
p2=str2;
for(;*p1!='\0';p1++,p2++)
{
if(*p1==*p2)
continue;
else
if(*p2=='*'||*p2=='?')
continue;
else
{
flag=1;
break;
}
}
}
if(flag==0)
printf("the two string accord with each other!");
else
printf("the two string do not accord with each other!");
getch();
}
这个算法比较直观.

对不礼貌的女生收钱......
2006-04-27 20:35
xike
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-4-25
收藏
得分:0 
有问题吧
好像有问题啊str1与str2怎么能同时++呢!
一个*可能对应多个字符啊
2006-04-27 21:11
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
用堆栈

淘宝杜琨
2006-04-27 23:25
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
啊,楼主不好意思,我看差了你的意思,等会我再想下

对不礼貌的女生收钱......
2006-04-29 09:52
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 


#include<stdio.h>
#include<string.h>
main()
{
char *p1=NULL,str[10]={'\0'},*p2=NULL,str2[10]={'\0'};
int i,flag=0;
printf("the first string:");
gets(str);
printf("the second string:");
gets(str2);
p1=str;
p2=str2;
for(;*p1!='\0'&&*p2!='*'&&*p2!='?';p1++,p2++)
{
if(*p1==*p2)
continue;
else
{
flag=1;
break;
}
}
p1=str+strlen(str)-1;
p2=str2+strlen(str2)-1;
for(;flag==0&&*p2!='*'&&*p2!='?';p1--,p2--)
{
if(*p1==*p2)
continue;
else
{
flag=1;
break;
}
}
if(flag==0)
printf("the two string accord with each other!");
else
printf("the two string do not accord with each other!");
getch();
}
呵,这样就行了,从后面再检验一次就行了.


对不礼貌的女生收钱......
2006-04-29 09:57
xike
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-4-25
收藏
得分:0 

谢谢啦啊

2006-05-03 12:53
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
其实还是不太行的,
比如:
abcdefghi
ab*k*hi
这不算匹配吧?
可我这程序还是算出结果是匹配的答案来.
这个程序只用于*只有一个啦,呵呵,不好意思。

对不礼貌的女生收钱......
2006-05-03 12:57
快速回复:求:关于含有通配符的字符串比较
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017267 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved