使用strlen剔除字符串中的指定单词

Using strlen to strikeout specified words in string

本文关键字:单词 字符串 strlen 使用      更新时间:2023-10-16

使用下面的函数,我可以传入两个字符串(char *hide, char *phrase)。*短语是整个字符串,* hide是必须通过将单词中的所有字母替换为'*'来删除的单词(可以重复)。它目前的工作原理是,它继续寻找*hide的第一个字母,然后是*hide单词的第二个字母,尽管它不是在字符串中彼此相邻。

*phrase = 'hello my name is'
*hide = 'lame'
result = 'he*lo my n*** is'
    {
        int i, j=0;
        int lengthPhrase = strlen(phrase);
        int lengthCensor = strlen(hide);
        for (i = 0; i < lengthPhrase; i++) {
            if (phrase[i] == hide[j]) {
                phrase[i] = '*';
                j++;
                }
            }
        }

问题出在哪里,这样它就可以正确地剔除整个单词??

感谢您的宝贵时间。

既然我似乎不理解你的问题,我想为你做一个函数,看看这是否是你要找的:

    string phrase = "hello my name is"
    string hide = "lame"    
    //strikeout function
    void strikeout(string phrase, string hide)
    {
        for (int i = 0; i < hide.size(); i++)
        {
            for (int j = 0; j < phrase.size(); j++)
            {
                if (hide[i] == phrase[j])
                {
                    phrase[j] = '*';
                }
            }
        }
        cout << phrase << endl;
    }

基于测试用例的输出:"h***o ** y n*** is"