簡體   English   中英

使用 indexOf (C#) 從字符串中刪除一組字符

[英]Using indexOf (C#) to remove a set of characters from a string

    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”時它可以工作,但是當我使用其中的兩個時它會卡住......請幫忙:)

IndexOf 方法為您提供了您需要知道的一切。 根據文檔

報告此實例中指定 Unicode 字符或字符串第一次出現的從零開始的索引。 如果在此實例中找不到字符或字符串,則該方法返回 -1。

這意味着您可以創建一個循環,只要返回的索引不是 -1 就可以重復,並且您不必逐個字母地循環測試字符串。

我認為這應該有效,只是在一些示例上對其進行了測試。 不使用 string.Replace 或 IndexOf

        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);

希望這有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM