首页 > 其他 > 详细

字符串匹配通配符"*、?"

时间:2021-07-13 15:10:15      阅读:16      评论:0      收藏:0      [点我收藏+]
bool IsMatch(CString s, CString p)
{
    int j = 0;//定义在外面,循环体外要用
    for (int i = 0, last_p = 0, s_start = 0; i < s.GetLength();)
    {
        if (j < p.GetLength() && (s[i] == p[j] || p[j] == ?))//
        {
            i++;
            j++;
        }
        else if (j < p.GetLength() && p[j] == *)
        {
            s_start = i;
            last_p = ++j;
        }
        else if (last_p != 0)
        {
            i = s_start++;
            j = last_p;
        }
        else
        {
            return false;
        }
    }
    for (; j < p.GetLength() && p[j] == *; ++j);
    return j == p.GetLength();
}

注:

*:匹配任意多个

?:匹配任意一个

形参

s:要搜索的字符串,例如:“a1b2c3”

p:匹配规则,例如:“a?b*”

字符串匹配通配符"*、?"

原文:https://www.cnblogs.com/kuaixue/p/15005913.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!