Нужен скрипт для анализа текста и формирование статистики - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д