Ввод массива строк и поиск среди них строк, содержащих заданный строковый фрагмент - C#
Формулировка задачи:
Необходимо разработать консольное приложение для ввода с клавиатуры массива строк и поиска среди них строк, содержащих заданный строковый фрагмент.
Для поиска потребуется использование метода IndexOf(string findThisString) для строковых элементов массива. Метод возвращает позицию начала искомой подстроки от начала строки, либо значение -1 при отсутствии соответствия.
Помогите, пожалуйста, написать код на C#
Решение задачи: «Ввод массива строк и поиск среди них строк, содержащих заданный строковый фрагмент»
textual
Листинг программы
class mainclass
{
static void Main()
{
System.Console.WriteLine ("Вводите строки(для выхода введите пустую строку): ");
string understring = "int";
string str = "e";
string[] arr = new string[0];
while (str.Length > 0) {
str = System.Console.ReadLine ();
string[] temp = new string[arr.Length + 1];
for (int j = 0; j < arr.Length; j++) {
temp [j] = arr [j];
}
temp [arr.Length] = str;
arr = new string[temp.Length];
for (int i = 0; i < temp.Length; i++) {
arr [i] = temp [i];
}
}
for (int i = 0; i < arr.Length; i++) {
int[] arr2 = someclass.IndexOf(arr[i], understring);
if(arr2.Length > 1)
{
System.Console.WriteLine ("В строке '{0}' имеется подстрока {1}. Начинается в индексе {2}, заканчивается {3}.", arr [i], understring, arr2 [0], arr2 [1]);
}
}
}
}
class someclass
{
public static int[] IndexOf(string str, string frag)
{
if (str.Length < frag.Length)
return new int[] { -1 };
int j = 0;
int x = -1, y = -1;
for (int i = 0; i < str.Length; i++) {
if (str [i] == frag [j]) {
if (x == -1) {
x = i;
}
++j;
if (j == frag.Length) {
y = i;
break;
}
} else {
j = 0;
x = y = -1;
}
}
if (x < 0 || y < 0)
return new int[] { -1 };
return new int[] { x, y };
}
}