Member 13032047 Ответов: 1

RE: Как найти повторяющуюся цепочку символов в visual basic NET


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

Я очень благодарен за пример кода, но я хотел бы найти способ перечислить один экземпляр каждого повторяющегося слова, найденного в тексте RTB1, в первом столбце Listview (т. е. Word), а затем во втором столбце (т. е. Frequency) того же listview, я также хотел бы показать количество частот каждого повторяющегося слова, найденного в RTB1?

Я проверил это, показав результат duplicate_words в отдельном RTB(2) и используя фразу: Это тест, повторенный несколько раз. Я получаю следующий (т. е. желаемый) результат:

Код:
RichTextBox2.Text = duplicate_names


Результат:

является
один
тест
Этот

Однако, когда я пытаюсь показать этот же результат в столбце Word ListView1, я получаю следующий (т. е. нежелательный) результат:

Код:
'For Each Value As String In duplicate_names OR
        Dim Value As String = duplicate_names

С
ListView1.Items.Add(Value)


(Примечание: Я отдельно попробовал как для каждого цикла, так и для тусклой линии значений вместе с LV.Предметы.Добавить строку)

Результат:

isatestThis

(То есть это показано в первой строке столбца Word?)

1. Как я могу заставить повторяющиеся слова отображаться в виде списка на отдельных строках (т. е. один под другим) в LV1 так же, как они отображаются в Примере RTB2?
2. Как я могу показать количество каждого повторяющегося слова, перечисленного в LV1, рядом с каждым словом в столбце 2 (т. е. частота).
3. Как я могу показать процент повторяемой частоты слов в третьем столбце?

Результаты, которых я хотел бы достичь, будут примерно следующими:

ЧАСТОТА СЛОВ %
это 6 25
а 6 25
тест 6 25
Этот 6-25

Я был бы очень признателен за любую помощь в этом вопросе, так как потратил много времени на поиск в интернете и тестирование материалов, но пока не смог достичь желаемых результатов!

Что я уже пробовал:

Code: <pre>RichTextBox2.Text = duplicate_names


Результат:

является
один
тест
Этот


Code: <pre>'For Each Value As String In duplicate_names OR
        Dim Value As String = duplicate_names

С
ListView1.Items.Add(Value)


Result:

isatestThis


Желаемый результат (всего слов в тексте = 24):

WORD      FREQUENCY      %
is            6          25
a             6          25
test          6          25
This          6          25

1 Ответов

Рейтинг:
0

Gerry Schmitz

Используйте словарь: Dictionary<string,int>

Используйте строку.Разделите свой текст, чтобы получить слова (токены[]).

Перебирайте маркеры, добавляя их в словарь (с графом 1) или обновляя (count++).

В итоге вы получаете словарь слов и подсчеты частот.

Используйте LINQ для получения сумм и процентов.

int count = 0;

if (myDic.ContainsKey(token)) {
   count = myDic[token];
}

myDic[token] = ++count;


Member 13032047

Спасибо за помощь, Джерри! Я оглянусь на использование словарей, чтобы освежить свою память! Кроме того, мне нужно будет изучить LINQ! Я не знаю, посмотрели ли вы на код под оригинальным заголовком, но я думаю, что код использует массив? Можно ли добавить к исходному коду список повторяющихся слов, сгенерированный в массиве этим кодом, и т. д.? Не очень опытный в программировании, но я учусь! :-)