Есть текст -
cat cat cat cat cat cat cat cat cat cat dog dog dog dog dog
Я делаю из текста массив строк с помощью Text.Split(' ')
. Как потом пользуясь циклом foreach получить такой текст? -
cat_10 dog_5
Если слово встречается один раз подряд - нужно делать cat_1
Ну, можно попробовать так:
string text = "cat cat cat cat cat cat cat cat cat cat dog dog dog dog dog";
var result = text.Split().GroupBy(x => x).Select(group=> $"{group.Key}_{group.Count()}");
var resultString = string.Join(" ", result);
IEnumerable<string>
, где каждое значение будет вида Key_count
.string.Join
преобразуем коллекцию в строку.select()
что то вроде .Aggregate((current, next) => current + " " + next)
. Тогда вы сразу будете получать нужную вам строку.Если вам по какой либо причине не хочется использовать LINQ и все новые навороты C#, то делайте тогда что то по типу следующего:
string text = "cat cat cat cat cat cat cat cat cat cat dog dog dog dog dog";
string[] arr = text.Split();
string result = "";
foreach (var val in arr)
{
if (!result.Contains(val))
{
int count = 0;
for (var i = 0; i < arr.Length; i++)
{
if (arr[i] == val)
count++;
}
result += val + "_" + count + " ";
}
}
Для скорости можно использовать StringBuilder
, а все циклы на for
.
Результат:
cat_10 dog_5
При помощи регулярки:
string text = "wolf cat cat cat cat cat cat cat cat cat cat dog dog dog dog dog";
Regex r = new Regex(@"((\w+)( \2)*)");
string result = r.Replace(text, m => m.Groups[2].Value + "_" + m.Value.Split().Length);
Результат:
wolf_1 cat_10 dog_5
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У меня спортивный интерес, как сделать следующий запрос более лаконичнымИ вообще понять как осуществляются подзапросы в linq к такой коллекции...
У меня возник следущий вопрос: у IdentityServer4 есть AddSigningCredential, который можно использовать для добавления сертификата, который, в свою очередь,...
Есть два файла: Файл txt(файл источник), в котором 4 колонки и несколько строк