В настоящее время я пытаюсь найти все совпадения с правилом в строке и скопировать их в вектор. Целью является создание приложения, которое извлекает верхние файлы N
.mp3 (подкасты) с веб-сайта сообщества.Найти повторяющиеся вхождения в String
Моя нынешняя тактика:
public static string getBetween(string strSource, string strStart, string strEnd)
{
int Start, End;
if (strSource.Contains(strStart) && strSource.Contains(strEnd))
{
Start = strSource.IndexOf(strStart, 0) + strStart.Length;
End = strSource.IndexOf(strEnd, Start);
string sFound = strSource.Substring(Start, End + 4 - Start);
strSource = strSource.Remove(Start, End + 4 - Start);
return sFound;
}
else
{
return"";
}
}
Вызывается, как это:
for (int i = 0; i < N; i++)
{
Podcast.Add(getBetween(searchDoc(@TARGET_HTM), "Sound/", ".mp3"));
}
Где searchDoc
является:
public static string searchDoc(string strFile)
{
StreamReader sr = new StreamReader(strFile);
String line = sr.ReadToEnd();
return line;
}
Почему я разместить такой большой кусок кода?
Это мое первое приложение на C#. Я предполагаю, что моя нынешняя тактика ошибочна, и я предпочел бы увидеть решение проблемы, лежащей в основе, чем дешевое решение для паршивого кода. Не стесняйтесь делать все, что захотите.
Что он должен делать:
Найти все вхождения "Sound/" + * + ".mp3"
(все MP3-файлы в каталоге Sound
, независимо от их названия, из верхней части целевого файла .htm
до N
найдены Сделайте так, возвращая вершину. . возникновение и удаление этого из String
Что он делает:.
это находит первое вхождение просто отлично это также устраняет возникновение просто отлично, однако, это только делает это от., который отбрасывается в конце функции.
Проблема:
Как вернуть измененную строку безопасным способом (без глобальных переменных или других неправомерных трюков), поэтому найденное вхождение правильно удаляется, а следующий может быть найден?
Строки неизменны в C#, поэтому, если вас беспокоит какой-либо метод, имеющий побочные эффекты, вам не нужно. –