使用 indexOf (C#) 从字符串中删除一组字符

本文关键字:一组 字符 删除 字符串 indexOf 使用 | 更新日期: 2023-09-27 18:20:12

    public static string shita1(string st1)
    {
        string st2 = "", stemp = st1;
        int i;
        for(i=0; i<stemp.Length; i++)
        {
            if (stemp.IndexOf("cbc") == i)
            {
                i += 2 ;
                stemp = "";
                stemp = st1.Substring(i);
                i = 0;
            }
            else
                st2 = st2 + stemp[i];
        }
        return st2;
    }


    static void Main(string[] args)
    {
        string st1;
        Console.WriteLine("enter one string:");
        st1 = Console.ReadLine();
        Console.WriteLine(shita1(st1));
    }

}

我从我的大学得到了一个挑战,挑战是从字符串中移动任何"CBC"字符......

这是我的代码...当我只使用一个"CBC"时它可以工作,但是当我使用其中的 2 个时,它会卡住......请帮忙:)

使用 indexOf (C#) 从字符串中删除一组字符

IndexOf 方法为您提供了您需要了解的所有信息。根据文档。

报告指定首次出现的从零开始的索引 此实例中的 Unicode 字符或字符串。该方法返回 如果在此实例中找不到字符或字符串,则为 -1。

这意味着您可以创建一个循环,只要返回的索引不是 -1,您就可以重复,并且您不必逐个字母循环字符串测试。

我认为这应该可以工作,只是在一些例子上测试了它。不使用字符串。替换或索引

        static void Main(string[] args)
        {
            Console.WriteLine("enter one string:");
            var input = Console.ReadLine();
            Console.WriteLine(RemoveCBC(input));
        }
        static string RemoveCBC(string source)
        {
            var result = new StringBuilder();
            for (int i = 0; i < source.Length; i++)
            {
                if (i + 2 == source.Length)
                    break;
                var c = source[i];
                var b = source[i + 1];
                var c2 = source[i + 2];
                if (c == 'c' && c2 == 'c' && b == 'b')
                    i = i + 2;
                else
                    result.Append(source[i]);
            }
            return result.ToString();
        }
您可以使用

Replace删除/替换另一个字符串中出现的字符串的所有匹配项:

string original = "cbc_STRING_cbc";
original = original.Replace("cbc", String.Empty);

如果要仅使用 IndexOf 方法从字符串中删除字符,则可以使用此代码。

public static string shita1(string st1)
    {
        int index = -1;
        string yourMatchingString = "cbc";
        while ((index = st1.IndexOf(yourMatchingString)) != -1)
            st1 = st1.Remove(index, yourMatchingString.Length);
        return st1;
    }

此代码删除字符串的所有输入。

但是您只需在一行中即可完成:

st1 = st1.Replace("cbc", string.Empty);

希望这有帮助。