Задать вопрос
@PashaKrizskiy

Как в C# с помощью регулярных выражений получить подстроку?

Есть строка вида:
string str = "Hello, World!";
И подстрока вида:
string sub_str = "Hello";
Собственно, вопрос в том, как в регэкп использовать не только строковую константу, а строковую константу совместно со строкой, хранимой в переменной.
Заранее спасибо за помощь.
  • Вопрос задан
  • 1128 просмотров
Подписаться 1 Оценить 3 комментария
Пригласить эксперта
Ответы на вопрос 2
@Beltoev
Живу в своё удовольствие
В общем, задача довольно тривиальная, есть список некоторых слов
List words;
И некоторый текст, хранящийся в переменной
String text;
Нужно посчитать кол-во мест, где встречается любое слово из words, при условии, что оно перед запятой.

Не вижу смысла в регулярках для такой задачи.
Простой пример кода, который подсчитает подходящие слова перед запятой (грубый набросок, не исключаю опечатки):

int GetCountOfWordsBeforeComma(string text, List<string> words)
{
  var commaIndex = text.IndexOf(",");

  if (commaIndex == -1) return words.Count();

  var result = 0;

  foreach(var word in words)
  {
      if (text.IndexOf(word) < commaIndex)
      {
          ++result;
      }
  }

  return result;
}
Ответ написан
Комментировать
@dmitrievMV
переменную суем в паттерн, паттерн суем в конструктор

List<string> words = new List<string> { "hello", "World" };
		string pattern = "("+ string.Join("|", words) + "),";
		Console.WriteLine(pattern);
		Regex r = new Regex(pattern, RegexOptions.IgnoreCase);
		
		string text = "Hello, World, hello world heelo";
		var matches = r.Matches(text);
		foreach(var match in matches){
			Console.WriteLine(match);
		}


https://dotnetfiddle.net/ScWaY1
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы