PDA

Показать полную графическую версию : [решено] Повторяющийся текст в файле.


HORRIBLE
08-08-2009, 01:43
Поползав по форуму нашел идентичную тему Creat0R'а, вот она:

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

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

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

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



#include <File.au3>

$File = "c:\test.txt"
$Array = _TextInFile ($File, "Просто текст")
If $Array[0][0]>1 Then
For $i = $Array[0][0] to 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 ($txtLines) Then
For $i=1 To $txtLines [0]
If StringInStr ($txtLines [$i], $text) Then
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
В итоге надо получить воттакое вот »
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
HORRIBLE, решено?

FYI: Как сообщить о том, что моя проблема решена? (http://forum.oszone.net/faq.php?faq=vb_board_usage#faq_solved_thread_faq)

HORRIBLE
14-08-2009, 00:31
Прошу прощения забыл совсем поставить, что решено!




© OSzone.net 2001-2012