2015-04-06 4 views
0

Так что я много часов пытался выяснить, как отобразить длину слова в vb. Например, если я ввожу предложение в богатое текстовое поле, и я нажимаю кнопку, я хочу, чтобы в форме отображалось количество однобуквенных слов, двухбуквенных слов, трехбуквенных слов и т. Д. предложение. Разумеется, количество слов определенной длины будет выводиться на этикетках.Как отобразить длину слова в vb?

Я нашел этот короткий код онлайн для подсчета слов:

dim wordcount as integer 

dim a as string() = RichText.Text.Split(" ") 

wordcount = a.length 

Однако, я не уверен, что этот код может быть использован для получения длины количества слов. Любые идеи о том, как я могу добиться вывода количества слов определенной длины в метке? Спасибо.

+0

Добро пожаловать в stackoverflow. Сначала отредактируйте свое сообщение, чтобы правильно отформатировать код. Во-вторых, что вы имеете в виду, что не знаете, можно ли использовать код? Разве это не работает для вас? Как это происходит? Чем конкретнее вы описываете свою проблему, тем лучше вы получите ответы. – mmgross

+0

В моей форме у меня есть опция, которая позволяет пользователю определять количество слов в их тексте (другими словами, wordcount). Пользователь вводит в текстовое поле с богатым и после нажатия кнопки появляется сообщение с меткой, содержащей количество слов. Этот код отлично работает для этого. Проблема, с которой я сталкиваюсь, связана с длиной подсчета слов. Как определить количество слов определенной длины в тексте, а затем отобразить их в ярлыках? Может ли приведенный выше код использоваться в сочетании с другим кодом для достижения этого? Спасибо. –

+0

Я предлагаю вам прочитать [страницу справки по форматированию] (http://stackoverflow.com/help/formatting), чтобы узнать, что я имел в виду, когда писал «форматировать свой код» – mmgross

ответ

0

А что-то вроде:

Private Sub mnuCount_Click() 
    Const DELIMITERS As String = vbNewLine & " !"",.:;?" 
    Dim WordCounts(1 To 100) As Long 
    Dim Msg As String 
    Dim I As Integer 
    Dim WordCount As Long 

    With RTB 
     .Visible = False 
     .SelStart = 0 
     Do 
      .UpTo DELIMITERS, vNegate:=True 
      .Span DELIMITERS, vNegate:=True 
      If .SelLength > 0 Then 
       WordCounts(.SelLength) = WordCounts(.SelLength) + 1 
       .SelStart = .SelStart + .SelLength 
      Else 
       Exit Do 
      End If 
     Loop 
     .SelStart = 0 
     .Visible = True 
    End With 

    Msg = "Length" & vbTab & "Count" 
    For I = 1 To 100 
     If WordCounts(I) > 0 Then 
      Msg = Msg & vbNewLine _ 
       & CStr(I) & vbTab & CStr(WordCounts(I)) 
      WordCount = WordCount + WordCounts(I) 
     End If 
    Next 
    Msg = Msg & vbNewLine _ 
     & "Grand total:" & vbNewLine _ 
     & vbTab & CStr(WordCount) 
    MsgBox Msg 
End Sub 
0

кода Pradnya в, переведенном на VB6:

Option Explicit 

Private Sub Command1_Click() 
Dim str As String 
Dim splitStr() As String 
Dim i As Integer 

str = "ABC DEF GHIJ KLMNOPQ" 
splitStr = Split(str, " ") 
MsgBox "Number of words = " & UBound(splitStr) + 1 & vbCrLf & _ 
     "Average Length = " & Len(Replace(str, " ", ""))/(UBound(splitStr) + 1) 
End Sub 

Я сделал несколько упрощений, а также. Нет необходимости проходить цикл, чтобы получить среднее значение. Все, что вам нужно сделать, чтобы получить длину целого, - это удалить пробелы и делить на количество элементов в массиве.

Однако, если вы хотите получить подсчет количества слов каждой длины, вам придется перебирать массив, получая длину каждого слова и сохраняя эти значения один за другим. Лучший способ сделать это - установить ссылку на scrrun.dll (Windows Scripting Runtime) и использовать объект Dictionary для хранения значений.

Смежные вопросы