如何在不使用C#中的indexof方法的情况下从字符串中查找子字符串?

时间:2010-11-16 01:54:19

标签: c# string substring

我想在不使用任何字符串方法(包括indexof)的情况下找到字符串中子字符串的位置。我尝试了很多次却失败了。有人会告诉我怎么做C#?我们可以使用.Length运算符。

6 个答案:

答案 0 :(得分:5)

假设这是家庭作业,我的建议是要记住一个字符串是一个IEnumerable字符。所以你可以循环遍历字符串中的字符......

答案 1 :(得分:5)

抱歉..认为这对我来说是一个有趣的练习,所以......

扰流

class Program
{
    static void Main(string[] args)
    {
        string str = "abcdefg";
        string substr = "cde";
        int index = IndexOf(str, substr);
        Console.WriteLine(index);
        Console.ReadLine();
    }

    private static int IndexOf(string str, string substr)
    {
        bool match;

        for (int i = 0; i < str.Length - substr.Length + 1; ++i)
        {
            match = true;
            for (int j = 0; j < substr.Length; ++j)
            {
                if (str[i + j] != substr[j])
                {
                    match = false;
                    break;
                }
            }
            if (match) return i;
        }

        return -1;
    }
}

答案 2 :(得分:0)

试试这个:

public static string BetweenOf(string ActualStr, string StrFirst, string StrLast)  
{ 
    return ActualStr.Substring(ActualStr.IndexOf(StrFirst) + StrFirst.Length,
          (ActualStr.Substring(ActualStr.IndexOf(StrFirst))).IndexOf(StrLast) + StrLast.Length);    
} 

答案 3 :(得分:0)

        string mainString = Console.ReadLine();
        string subString = Console.ReadLine();
        for (int i = 0; i <= mainString.Length - subString.Length; i++)
        {
            bool match = true;
            for (int j = 0; j < subString.Length && mainString[i + j] != subString[j]; j++)
            {
                match = false;
            }
            if (match)
                Console.WriteLine(i);
        }    

答案 4 :(得分:0)

e.preventDefault();

答案 5 :(得分:-1)

试试这个:

internal bool SearchWord(string str, string searchKey)
{
    int j = 0; bool result = false;
    for (int i = 0; i < str.Length; i++)
    {
        if (searchKey[j] == str[i])
        {
            j++; //count++;
        }
        else { j = 0; }

        if (j == searchKey.Length)
        {
            result = true;
            break;
        }
    }
    return result;
}