Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Повторяющийся текст в файле. (http://forum.oszone.net/showthread.php?t=147420)

HORRIBLE 08-08-2009 01:43 1188597

Повторяющийся текст в файле.
 
Поползав по форуму нашел идентичную тему Creat0R'а, вот она:
читать дальше »

Хотелось бы решить такую задачу...
Имеется файл, а в нём много разного текста, и нужно перечитать весь текст, и проверить, не содержатся ли в нём дубликаты определённой переменной.
Т.е, допустим файл содержит такой текст:

[code]
Первая строчка
Вторая строчка
Просто текст
Ещё текст...
Просто текст
[\code]

И заранее известно, что именно нужно искать, и это помещенно в переменную - $Var = "Просто текст"...

Нужно в этом файле вычеслить, повторяется ли этот самый текст (тот который в переменной), если есть совпадения, то желательно вернуть номер строчки где есть совпадение, и строку содержащюю найденый дубликат (в Array[1].. [2] и т.п).

Решение предложенное amel27

PHP код:

#include <File.au3>

$File "c:\test.txt"
$Array _TextInFile ($File"Просто текст")
If 
$Array[0][0]>1 Then
        
For $i $Array[0][0to 2 Step -1
                _FileWriteToLine
($File$Array[$i][0], ""1)
        
Next
EndIf

Func _TextInFile ($file$text)
        
Local $i$txtLines$res [1][2] = [[0,0]]
        
_FileReadToArray ($file$txtLines)
        If 
IsArray ($txtLinesThen
                
For $i=1 To $txtLines [0]
                        If 
StringInStr ($txtLines [$i], $textThen
                                ReDim $res 
[$res [0][0]+2][2]
                                
$res [0][0] = $res [0][0] +1
                                $res 
[$res [0][0]][0] = $i
                                $res 
[$res [0][0]][1] = $txtLines [$i]
                        EndIf
                
Next
        
EndIf
        Return 
$res
EndFunc 




У меня вот идентичная проблема, есть файл в котором:
Код:

1
1
233759
38782524?95793
16910026
1785220?83255
233759
38782524?95793
16910026
233759
38782524?95793
16910026
1785220?83255

Как я хотел, прочитать файл в массив и подставлять каждый элемент массива вместо (Просто текст). Сделал такое, в файл записывает только первый совпавший элемент =(
В итоге надо получить воттакое вот:
Код:

1
233759
38782524?95793
16910026
1785220?83255

Спасибо.

amel27 08-08-2009 08:22 1188654

Цитата:

Цитата HORRIBLE
В итоге надо получить воттакое вот »

Код:

ConsoleWrite(_StringDistinct(FileRead("c:\TEST\1.txt")) &@CRLF)

Func _StringDistinct($sTXT)
    Local $aLN1, $sOUT = ""

    While $sTXT <> ""
        $aLN1 = StringRegExp($sTXT, "^[^\n\r]*", 1)
        $sTXT = StringRegExpReplace($sTXT, "(?m)^\Q"& $aLN1[0] &"\E(?:\r\n|\n|$)", "")
        $sOUT&= $aLN1[0] &@CRLF
    WEnd
    Return
$sOUT
EndFunc


amel27 11-08-2009 05:42 1190697

HORRIBLE, решено?

FYI: Как сообщить о том, что моя проблема решена?

HORRIBLE 14-08-2009 00:31 1193214

Прошу прощения забыл совсем поставить, что решено!


Время: 04:10.

Время: 04:10.
© OSzone.net 2001-