Нужен скрипт для анализа текста и формирование статистики - VB

Узнай цену своей работы

Формулировка задачи:

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

Решение задачи: «Нужен скрипт для анализа текста и формирование статистики»

textual
Листинг программы
Option Explicit
Option Compare Text
Const AlfaBet As String = "абвгдеёжзийклмнопрстухцчшщъыьэюя" & _
                          "abcdefghijklmnopqrstuvwxyz" & _
                          "1234567890"
Sub TextStatistic()
  Dim i As Long, ff As Integer, s As String, sTmp As String, nLet As Long, nRow
    ff = FreeFile
    'Open App.Path & "\1.txt" For Input As #ff
           ' s = Input(LOF(ff), 1)
    'Close #ff
    s = InputBox("Введите текст", "Ввод данных", "йцукенгшщзхъфывапролджэ  ,,..1234567889ю. ячсмитьбюё")
    sTmp = DelSymb(s)
    Cells(1, 1).Value = "Букв     - " & Len(Replace(sTmp, " ", ""))
    Cells(2, 1).Value = "Слов     - " & UBound(Split(sTmp)) + 1
    Cells(3, 1).Value = "Предлож. - " & UBound(Split(LetAndDot(s), "."))
    Cells(4, 1).Value = "Абзацев  - " & Tbl(s)
    nRow = 4
    For i = 1 To Len(AlfaBet)
        nLet = UBound(Split(sTmp, Mid(AlfaBet, i, 1)))
        If nLet <> 0 Then nRow = nRow + 1: Cells(nRow, 1).Value = Mid(AlfaBet, i, 1) & "  --  " & nLet
    Next i
End Sub
 
Function DelSymb(ByVal s As String) As String
    Dim st As String, i As Long
    For i = 1 To Len(s)
        If Mid(s, i, 1) Like "[0-9aA-zZаА-яЯёЁ ]" Then
             st = st & Mid(s, i, 1)
        Else
             st = st & " "
        End If
    Next i
    Do While InStr(1, st, "  ")
             st = Replace(st, "  ", " ")
    Loop
    DelSymb = st
End Function
 
Function LetAndDot(ByVal s As String) As String
    Dim st As String, i As Long
    For i = 1 To Len(s)
        If Mid(s, i, 1) Like "[0-9aA-zZаА-яЯёЁ.?!]" Then
             st = st & Mid(s, i, 1)
        End If
    Next i
    st = Replace(Replace(st, "!", "."), "?", ".") 'тут немного коряво
    Do While InStr(1, st, "..")
             st = Replace(st, "..", ".")
    Loop
    LetAndDot = st
End Function
 
Function Tbl(ByVal s As String) As Integer
    Dim n As Integer, i As Long
    For i = 1 To Len(s)
        If Mid(s, i, 3) = vbCrLf & " " Then
             n = n + 1
        End If
    Next i
    Tbl = n + 1
End Function

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.6 из 5
Похожие ответы