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

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

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

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

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

textual
Листинг программы
  1. Option Explicit
  2. Option Compare Text
  3. Const AlfaBet As String = "абвгдеёжзийклмнопрстухцчшщъыьэюя" & _
  4.                           "abcdefghijklmnopqrstuvwxyz" & _
  5.                           "1234567890"
  6. Sub TextStatistic()
  7.   Dim i As Long, ff As Integer, s As String, sTmp As String, nLet As Long, nRow
  8.     ff = FreeFile
  9.     'Open App.Path & "\1.txt" For Input As #ff
  10.           ' s = Input(LOF(ff), 1)
  11.    'Close #ff
  12.    s = InputBox("Введите текст", "Ввод данных", "йцукенгшщзхъфывапролджэ  ,,..1234567889ю. ячсмитьбюё")
  13.     sTmp = DelSymb(s)
  14.     Cells(1, 1).Value = "Букв     - " & Len(Replace(sTmp, " ", ""))
  15.     Cells(2, 1).Value = "Слов     - " & UBound(Split(sTmp)) + 1
  16.     Cells(3, 1).Value = "Предлож. - " & UBound(Split(LetAndDot(s), "."))
  17.     Cells(4, 1).Value = "Абзацев  - " & Tbl(s)
  18.     nRow = 4
  19.     For i = 1 To Len(AlfaBet)
  20.         nLet = UBound(Split(sTmp, Mid(AlfaBet, i, 1)))
  21.         If nLet <> 0 Then nRow = nRow + 1: Cells(nRow, 1).Value = Mid(AlfaBet, i, 1) & "  --  " & nLet
  22.     Next i
  23. End Sub
  24.  
  25. Function DelSymb(ByVal s As String) As String
  26.     Dim st As String, i As Long
  27.     For i = 1 To Len(s)
  28.         If Mid(s, i, 1) Like "[0-9aA-zZаА-яЯёЁ ]" Then
  29.              st = st & Mid(s, i, 1)
  30.         Else
  31.              st = st & " "
  32.         End If
  33.     Next i
  34.     Do While InStr(1, st, "  ")
  35.              st = Replace(st, "  ", " ")
  36.     Loop
  37.     DelSymb = st
  38. End Function
  39.  
  40. Function LetAndDot(ByVal s As String) As String
  41.     Dim st As String, i As Long
  42.     For i = 1 To Len(s)
  43.         If Mid(s, i, 1) Like "[0-9aA-zZаА-яЯёЁ.?!]" Then
  44.              st = st & Mid(s, i, 1)
  45.         End If
  46.     Next i
  47.     st = Replace(Replace(st, "!", "."), "?", ".") 'тут немного коряво
  48.    Do While InStr(1, st, "..")
  49.              st = Replace(st, "..", ".")
  50.     Loop
  51.     LetAndDot = st
  52. End Function
  53.  
  54. Function Tbl(ByVal s As String) As Integer
  55.     Dim n As Integer, i As Long
  56.     For i = 1 To Len(s)
  57.         If Mid(s, i, 3) = vbCrLf & " " Then
  58.              n = n + 1
  59.         End If
  60.     Next i
  61.     Tbl = n + 1
  62. End Function

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


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

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

5   голосов , оценка 4.6 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы