powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Лексическая статистика
3 сообщений из 3, страница 1 из 1
Лексическая статистика
    #34161868
Удирающий_от_Access
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть текст:

Label1.Text = "Саша Маша каша Саша Саша каша";

Как получить о нем отчёт в таком виде:

Слова | Количество
----------------------------
каша | 2
Саша | 3
Маша | 1?

Мой вопрос связан с тем, что нет ясности как в конструкции for(){} "уменьшить "на лету" размер массива, если какое-то слово-элемент массива повторяется? Надо ж его удалять, чтобы не прокручивать снова.

Вот мой код:

private string CountStrings(string str)
{

StringCollection myCol = new StringCollection();

string count = "";
string[] searchString = str.Split(new char[] { ' ' });
myCol.AddRange(searchString);

for (int i = 0; i < myCol.Count; i++)
{
if (myCol.Length > 2)
{
count += myCol + ": " + new Regex(myCol).Matches(str).Count + "<br />";
}
}
return count;
}

Хотя Regex подсчитывает правильно, цикл прокручивает всЁ, т.к. он не менялся после создания.

Спасибо.
...
Рейтинг: 0 / 0
Лексическая статистика
    #34162570
Dimon aka Manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hashtable вполне справится. Или, лучше, Dictionary<string, int>

Dictionary<string, int> words = new Dictionary<string, int>();
foreach(string word in str.Split(' '))
  if(words.ContainsKey(word))
    words[word]++;
  else
    words.Add(word, 1);


Многие вещи нам непонятны не оттого, что наши понятия слабы, а оттого, что данные вещи не входят в круг наших понятий.
...
Рейтинг: 0 / 0
Лексическая статистика
    #34162743
Удирающий_от_Access
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, работает.

Только мешает, что надо в конце делать ещё один прогон цикла типа:

foreach (KeyValuePair<string, int> kv in words)
{
count += kv.Key + " - " + kv.Value + "<br />";

}

А хотелось бы избежать, и вычислить за раз.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Лексическая статистика
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]