Advertisement
AZJIO

ошиб слово сортировать и подчистить

Dec 17th, 2017
544
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 2.06 KB | None | 0 0
  1. #include <Array.au3>
  2.  
  3. ; Замена в результатах ошибок слов одно-двухбуквенные части слов
  4. ; (\r\n)([А-Яа-яЁё°±]{1,2}\r\n)
  5. ; \1
  6.  
  7. ; Удалить дубликаты слов друг за другом
  8. ; (\r\n)(.*?\r\n)\2
  9. ; \1\2
  10.  
  11. $sText=ClipGet()
  12. ; Удалить одно-двухбуквенные части слов
  13. $sText = StringRegExpReplace($sText, '(?<=\r\n)([А-Яа-яЁё°±]{1,2}\r\n)', '')
  14. ; Удалить дубликаты слов
  15. $sText = _StringUnique($sText)
  16. ; Удалить слова по списку
  17. $sOrfo_ignor = FileRead(@ScriptDir & '\список_допустимых_слов.txt')
  18. $aOrfo_ignor = StringSplit($sOrfo_ignor, @CRLF)
  19. For $i = 1 To $aOrfo_ignor[0]
  20.     $sText=StringReplace($sText, @LF & $aOrfo_ignor[$i] & @CR, '')
  21. Next
  22. ; Удалить пустые строки
  23. $sText=StringRegExpReplace($sText, '(\r\n|\r|\n){2,}', '\1')
  24.  
  25. ; Сортировать список
  26. ; $aList=StringSplit($sText, @CRLF)
  27. ; _ArraySort($aList, 0, 1, 0, 0)
  28. ; $sText = ''
  29. ; For $i = 1 To $aList[0]
  30.     ; $sText &= $aList[$i] & @CRLF
  31. ; Next
  32.  
  33. ; Вывод результата
  34. ClipPut($sText)
  35.  
  36. Func _StringUnique($sText, $sep = @CRLF, $sep2 = '', $all = 1)
  37.     Local $i, $k, $aText, $s, $Trg = 0
  38.     If $all And $sep2 == '' Then $sep2 = $sep
  39.     If StringInStr($sText, '[') And $sep <> '[' Then
  40.         For $i = 0 To 255
  41.             $s = Chr($i)
  42.             If Not StringInStr($sText, $s) Then
  43.                 If StringInStr($sep, $s) Then ContinueLoop
  44.                 $sText = StringReplace($sText, '[', $s)
  45.                 $Trg = 1
  46.                 ExitLoop
  47.             EndIf
  48.         Next
  49.         If Not $Trg Then Return SetError(1, 0, '')
  50.     EndIf
  51.  
  52.     $aText = StringSplit($sText, $sep, $all)
  53.     Assign('/', 2, 1)
  54.     $k = 0
  55.     $sText = ''
  56.     For $i = 1 To $aText[0]
  57.         If Not IsDeclared($aText[$i] & '/') Then
  58.             Assign($aText[$i] & '/', 0, 1)
  59.             $sText &= $aText[$i] & $sep2
  60.             $k += 1
  61.         EndIf
  62.     Next
  63.     If $k = 0 Then Return SetError(2, 0, '')
  64.     If $Trg Then $sText = StringReplace($sText, $s, '[')
  65.     Return SetError(0, $k, StringTrimRight($sText, StringLen($sep2)))
  66. EndFunc   ;==>_StringUnique
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement