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