brNwsH 0 Posted August 5, 2011 (edited) Hey Com, im new here and i need some help. i searched the forums already and didnt found anything. i have a text file with some textlines. some of these lines have an [xyz] infront of the text. is it possible to search these lines and only delete the clamp + text in between them? thx brN //EDIT i think i got it can be closed Edited August 5, 2011 by brNwsH Share this post Link to post Share on other sites
wakillon 404 Posted August 5, 2011 Welcome to the forums ! Try #include <String.au3> $_FilePath = 'C:\text.txt' $_FileRead = FileRead ( $_FilePath ) $_NewText = _RemoveBetweenBrackets ( $_FileRead, 1 ) ConsoleWrite ( "!->-- $_NewText : " & $_NewText & @Crlf ) $_file = FileOpen ( $_FilePath, 2 ) FileWrite ( $_file, $_NewText ) FileClose ( $_file ) Func _RemoveBetweenBrackets ( $_Stringg, $_Option=1 ) ; 1 [ ], 2 ( ), 3 { }, 4 < >, 5 ‹ ›, 6 « » Local $_BracketsArray[13] = [12, '[' ,']' ,'(' ,')' ,'{', '}', '<', '>', '‹', '›', '«', '»'] Local $_chr1 = $_BracketsArray[$_Option*2-1], $_chr2 = $_BracketsArray[$_Option*2] $_StringBetweenArray = _StringBetween ( $_Stringg, $_chr1, $_chr2 ) If Not @error Then For $_S = 0 To UBound ( $_StringBetweenArray ) -1 $_StringInStr1 = StringInStr ( $_Stringg, $_chr1 & $_StringBetweenArray[$_S] & $_chr2 ) -1 $_StringInStr2 = StringLen ( $_StringBetweenArray[$_S] ) + 2 $_Stringg = StringLeft ( $_Stringg, $_StringInStr1 ) & StringRight ( $_Stringg, StringLen ( $_Stringg ) - $_StringInStr1-$_StringInStr2 ) Next Else Return $_Stringg EndIf Return StringStripWS ( $_Stringg, 7 ) EndFunc ;==> _RemoveBetweenBrackets ( )It remove all occurences between brackets. AutoIt 3.3.14.2 X86 - SciTE 3.6.0 - WIN 8.1 X64 - Other Example Scripts Share this post Link to post Share on other sites
brNwsH 0 Posted August 5, 2011 Welcome to the forums ! Try #include <String.au3> $_FilePath = 'C:\text.txt' $_FileRead = FileRead ( $_FilePath ) $_NewText = _RemoveBetweenBrackets ( $_FileRead, 1 ) ConsoleWrite ( "!->-- $_NewText : " & $_NewText & @Crlf ) $_file = FileOpen ( $_FilePath, 2 ) FileWrite ( $_file, $_NewText ) FileClose ( $_file ) Func _RemoveBetweenBrackets ( $_Stringg, $_Option=1 ) ; 1 [ ], 2 ( ), 3 { }, 4 < >, 5 ‹ ›, 6 « » Local $_BracketsArray[13] = [12, '[' ,']' ,'(' ,')' ,'{', '}', '<', '>', '‹', '›', '«', '»'] Local $_chr1 = $_BracketsArray[$_Option*2-1], $_chr2 = $_BracketsArray[$_Option*2] $_StringBetweenArray = _StringBetween ( $_Stringg, $_chr1, $_chr2 ) If Not @error Then For $_S = 0 To UBound ( $_StringBetweenArray ) -1 $_StringInStr1 = StringInStr ( $_Stringg, $_chr1 & $_StringBetweenArray[$_S] & $_chr2 ) -1 $_StringInStr2 = StringLen ( $_StringBetweenArray[$_S] ) + 2 $_Stringg = StringLeft ( $_Stringg, $_StringInStr1 ) & StringRight ( $_Stringg, StringLen ( $_Stringg ) - $_StringInStr1-$_StringInStr2 ) Next Else Return $_Stringg EndIf Return StringStripWS ( $_Stringg, 7 ) EndFunc ;==> _RemoveBetweenBrackets ( ) It remove all occurences between brackets. Hey thx it works good but it is writing everything successively. e.g. [abc]abc [def]def [ghi]ghi ________solution abcdefghi but i want it underneath abc def ghi thx brN Share this post Link to post Share on other sites
wakillon 404 Posted August 5, 2011 With a text file containing this[abc]abc[def]def[ghi]ghifunction return this :abcdefghiand not abcdefghi ! #include <String.au3> $_FilePath = 'C:\text.txt' $_FileRead = FileRead ( $_FilePath ) $_NewText = _RemoveBetweenBrackets ( $_FileRead, 1 ) ConsoleWrite ( "!->-- $_NewText : " & $_NewText & @Crlf ) $_file = FileOpen ( $_FilePath, 2 ) FileWrite ( $_file, $_NewText ) FileClose ( $_file ) Run ( 'notepad ' & $_FilePath ) Func _RemoveBetweenBrackets ( $_Stringg, $_Option=1 ) ; 1 [ ], 2 ( ), 3 { }, 4 < >, 5 ‹ ›, 6 « » Local $_BracketsArray[13] = [12, '[' ,']' ,'(' ,')' ,'{', '}', '<', '>', '‹', '›', '«', '»'] Local $_chr1 = $_BracketsArray[$_Option*2-1], $_chr2 = $_BracketsArray[$_Option*2] $_StringBetweenArray = _StringBetween ( $_Stringg, $_chr1, $_chr2 ) If Not @error Then For $_S = 0 To UBound ( $_StringBetweenArray ) -1 $_StringInStr1 = StringInStr ( $_Stringg, $_chr1 & $_StringBetweenArray[$_S] & $_chr2 ) -1 $_StringInStr2 = StringLen ( $_StringBetweenArray[$_S] ) + 2 $_Stringg = StringLeft ( $_Stringg, $_StringInStr1 ) & StringRight ( $_Stringg, StringLen ( $_Stringg ) - $_StringInStr1-$_StringInStr2 ) Next Else Return $_Stringg EndIf Return StringStripWS ( $_Stringg, 7 ) EndFunc ;==> _RemoveBetweenBrackets ( ) AutoIt 3.3.14.2 X86 - SciTE 3.6.0 - WIN 8.1 X64 - Other Example Scripts Share this post Link to post Share on other sites
brNwsH 0 Posted August 5, 2011 yeah the function is returning right but in my txt file everything is writtin successively so far brN Share this post Link to post Share on other sites