Собственная функция MySubstring

118
04 августа 2019, 03:20

Я решил написать собственую функцию MySubstring. Но я не уверен что правильно все сделал + в меине выдает ошибку что я не могу так записывать

string mySubstring = MySubstring(str1, 3, 3);

Код:

string MySubstring(string str, int startIndex, int length)
{
    string temp = System.String.Empty;
    for (int index = 0; index < str.Length; ++index)
    {
       if (str[index] == startIndex)
       {
          for (int j = 0; j < length; ++j)
          {
             temp += str[index];
          }
       }
    }
    return temp;
}
static void Main(string[] args)
{
   string str1 = "I like it like that";
   string mySubstring = MySubstring(str1, 3, 3);
   System.Console.WriteLine(mySubstring);
}
Answer 1

Скорее всего для вас будет интересен метод расширение. Пример кода

public static class StringExtensions
{
    public static string MySubstring(this string str, int startIndex, int length)
    {
        string temp = string.Empty;
        for (int index = 0; index < str.Length; ++index)
        {
            if (index == startIndex)
            {
                for (int j = index; j < length + index; ++j)
                {
                    temp += str[j];
                }
                return temp;
            }
        }
        return temp;
    }
}
class Program
{
    static void Main(string[] args)
    {
        string template = "привет мир!";
        var result = template.MySubstring(2, 5);
    }
}

зы. как заметили в одном из комментариев, чтобы не потерять много в производительности, следует использовтаь StringBuilder

пример кода с созданием метода в классе Program

class Program
{
    static void Main(string[] args)
    {
        string template = "привет мир!";
        var result = MySubstring(template, 2, 5);
    }
    static string MySubstring(string str, int startIndex, int length)
    {
        string temp = string.Empty;
        for (int index = 0; index < str.Length; ++index)
        {
            if (index == startIndex)
            {
                for (int j = index; j < length + index; ++j)
                {
                    temp += str[j];
                }
                return temp;
            }
        }
        return temp;
    }
}

зы. производительный(и правильный) метод будет выглядеть так

    static string MySubstring(string str, int startIndex, int length)
    {
        StringBuilder sb = new StringBuilder(length);
        for (int index = startIndex; index < length + startIndex; ++index)
        {
            sb.Append(str[index]);
        }
        return sb.ToString();
    }
READ ALSO
Неверное количество индексов в массиве

Неверное количество индексов в массиве

Задача из двумерного массива вытаскивать его элементы в виде массивов

103
Сериализация в C# объектов, имеющих взаимные ссылки

Сериализация в C# объектов, имеющих взаимные ссылки

Подскажите, пожалуйста, как правильно сериализовывать/десериализовывать объекты в XML, имеющие взаимные ссылкиНапример, есть классы Car и Garage

84