Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для AZJIO

Старожил


Сообщения: 254
Благодарности: 126

Профиль | Отправить PM | Цитировать


STARSsoft,

FileOperations.au3

Код: Выделить весь код
#include <FileOperations.au3>

$sPath = @ScriptDir & '\index.htm'
$sText = FileRead($sPath)
$aSplit = _StringSplitRegExp($sText, '<!-- Post -->.*?<!-- # Post -->')
For $i = 1 To $aSplit[0]
    $sPathNew = _FO_GetCopyName($sPath, 1)
    $hFile = FileOpen($sPathNew, 2)
    FileWrite($hFile, $aSplit[$i])
    FileClose($hFile)
Next

; http://www.autoitscript.com/forum/topic/139260-autoit-snippets/?p=1065198
; http://www.autoitscript.com/forum/topic/139260-autoit-snippets/page__st__140#entry1036931
; http://www.autoitscript.com/forum/topic/65662-stringsplitregexp/
; Автор ..........: AZJIO
Func _StringSplitRegExp($sString, $sPattern, $flag = 0, $sIncludeMatch = 0, $iCount = 0)
    Local $sSplit, $sDelim, $sReplace, $Toggle, $iPos = 1
    If IsBinary($sString) Then
        $sString = Hex($sString)
        $sDelim = Chr(1)
        Local $aError[2] = [1, $sString]
    Else
        Local $aError[2] = [1, $sString]
        For $i = 1 To 30
            $Toggle = Not $Toggle
            If $Toggle Then ; 1, 30, 3, 28    ...   27, 4, 29, 2
                $sDelim &= Chr($i)
            Else
                $sDelim &= Chr(32 - $i)
            EndIf
            $iPos = StringInStr($sString, $sDelim, 1, 1, $iPos) ; смещение позволяет найти разделитель за 1 проход
            If Not $iPos Then ExitLoop ; если вхождение не найдено, то разделитель сформирован
        Next
        If $iPos Then Return SetError(1, 0, $aError)
    EndIf
    Switch $sIncludeMatch
        Case 0
            $sReplace = $sDelim
        Case 1
            $sReplace = "$0" & $sDelim
        Case 2
            $sReplace = $sDelim & "$0"
    EndSwitch
    $sSplit = StringRegExpReplace($sString, $sPattern, $sReplace, $iCount)
    If @error Then Return SetError(2, @extended, $aError)
    If Not @extended Then Return SetError(3, 0, $aError)
    If $flag Then $flag = 2
    Return StringSplit($sSplit, $sDelim, 1 + $flag)
EndFunc   ;==>_StringSplitRegExp

Последний раз редактировалось AZJIO, 24-05-2013 в 09:34.

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:28, 14-05-2013 | #17