Jump to content

Help to sort string :(


 Share

Recommended Posts

Hi. For example i have file named "test"

It contains

1. Action I (1 hour, 51 minutes, 38 seconds; Finish: 12.10.2008 8:46:48)

2. Action II (8 hours, 39 minutes, 54 seconds; Finish: 12.10.2008 17:26:42)

3. Action III (1 hour, 35 minutes, 41 seconds; Finish: 12.10.2008 19:02:24)

4. Action IV (4 days, 1 hour, 27 minutes, 1 second; Finish: 16.10.2008 20:29:25)

When i am using

_FileReadToArray("test.txt", $ActionArray)

i am reciaving an array, that have

string "1. Action I (1 hour, 51 minutes, 38 seconds; Finish: 12.10.2008 8:46:48)" in $ActionArray[1]

How can i delete every information that i don need, and recive from "1. Action I (1 hour, 51 minutes, 38 seconds; Finish: 12.10.2008 8:46:48)", string like "Action I - 12.10.2008 8:46:48"?

Help please :P

Edited by Belfigor

[size="1"]My bear is so cute asleep in the closet, not even drinking vodka. My nuclear bomb name is Natasha.[/size]

Link to comment
Share on other sites

Hi. For example i have file named "test"

It contains

1. Action I (1 hour, 51 minutes, 38 seconds; Finish: 12.10.2008 8:46:48)

2. Action II (8 hours, 39 minutes, 54 seconds; Finish: 12.10.2008 17:26:42)

3. Action III (1 hour, 35 minutes, 41 seconds; Finish: 12.10.2008 19:02:24)

4. Action IV (4 days, 1 hour, 27 minutes, 1 second; Finish: 16.10.2008 20:29:25)

When i am using

_FileReadToArray("test.txt", $ActionArray)

i am reciaving an array, that have

string "1. Action I (1 hour, 51 minutes, 38 seconds; Finish: 12.10.2008 8:46:48)" in $ActionArray[1]

How can i delete every information that i don need, and recive from "1. Action I (1 hour, 51 minutes, 38 seconds; Finish: 12.10.2008 8:46:48)", string like "Action I - 12.10.2008 8:46:48"?

Help please :(

Try this:

$sFile = @ScriptDir & "\test.txt"

$sRead = FileRead($sFile)

$sRead = StringRegExpReplace($sRead, "(?i).*(Action\s?\w+).*?:(.*)\)", "\1 -\2")

$hFile = FileOpen($sFile, 2)
FileWrite($hFile, $sRead)
FileClose($hFile)
Edited by rasim
Link to comment
Share on other sites

...or the hard way

Dim $ActionArray[2]
$ActionArray[1] = "1. Action I (1 hour, 51 minutes, 38 seconds; Finish: 12.10.2008 8:46:48)"

$act = StringInStr($ActionArray[1], "Action")
$par1 = StringInStr($ActionArray[1], "(")
$part1 = StringMid($ActionArray[1], $act, $par1 - $act)

$fin = StringInStr($ActionArray[1], "Finish")
$par2 = StringInStr($ActionArray[1], ")")
$part2 = StringMid($ActionArray[1], $fin, $par2 - $fin)

MsgBox(0, "", $part1 & "- " & $part2)
:-)

[size="1"][font="Arial"].[u].[/u][/font][/size]

Link to comment
Share on other sites

Thank you every one!

herewasplato's way is more understandeble for me :P thank you :(

Now i have script that will generate for me from the test.txt file test2.txt file with lines looks like that:

[name] [date]

[science I] [13.12.2008 4:17:47]

[Engineering IV] [13.12.2008 4:57:39]

[industry II] [13.12.2008 8:03:22]

[industry III] [14.12.2008 8:03:22]

[industry IV] [15.12.2008 8:03:22]

[industry V] [16.12.2008 8:03:22]

now i need to change .txt file once more.

How can i teach my script to understand how to mark each line if that line have special word?

For example, if script found in any line, words: "Science I" "Science II" "Science III" "Science IV" "Science V", he will add to the begining of the line word "Science" and after all changes line

[science I] [13.12.2008 4:17:47]

will looks like

[class] [name] [date]

[science] [science I] [13.12.2008 4:17:47]

How can i do it?

Edited by Belfigor

[size="1"]My bear is so cute asleep in the closet, not even drinking vodka. My nuclear bomb name is Natasha.[/size]

Link to comment
Share on other sites

can u explain that "+"

Help file can explain things to :P

+ Repeat the previous character, set or group 1 or more times. Equivalent to {1,}

 

Spoiler

Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1

AutoIt_Rus_Community.png AutoIt Russian Community

My Work...

Spoiler

AutoIt_Icon_small.pngProjects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize Program

AutoIt_Icon_small.pngUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF
 
AutoIt_Icon_small.pngExamples: 
ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo

Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating AutoIt_Rating.gif)

* === My topics === *

==================================================
My_Userbar.gif
==================================================

 

 

 

AutoIt is simple, subtle, elegant. © AutoIt Team

Link to comment
Share on other sites

I asked here because I didnt understand reading the help

I agree.

It does not make sense to me either - but I've not spent a lot of time going over and over it. When I find a task that I must use RegExp in, I'll probably dive in. Until then, the stuff I posted works for me.

[size="1"][font="Arial"].[u].[/u][/font][/size]

Link to comment
Share on other sites

  • Moderators

The "+" is telling the regex engine that there are at least 1 word character but may be more... to get through all of them before it continues to the next match command.

Common sense plays a role in the basics of understanding AutoIt... If you're lacking in that, do us all a favor, and step away from the computer.

Link to comment
Share on other sites

Here is simple example that shows why to use "+":

$Var = "My 1001 String"

$Ret1 = StringRegExpReplace($Var, ".*[^\d](\d).*", "\1")
$Ret2 = StringRegExpReplace($Var, ".*[^\d](\d+).*", "\1")

MsgBox(0, "", StringFormat("Without '+'\t= %i\nWith '+'\t\t= %i", $Ret1, $Ret2))

Here we can see that when we use "+" with "\d" (it's digits matching), the RegExp match number that include more than 1 digit.

 

Spoiler

Using OS: Win 7 Professional, Using AutoIt Ver(s): 3.3.6.1 / 3.3.8.1

AutoIt_Rus_Community.png AutoIt Russian Community

My Work...

Spoiler

AutoIt_Icon_small.pngProjects: ATT - Application Translate Tool {new}| BlockIt - Block files & folders {new}| SIP - Selected Image Preview {new}| SISCABMAN - SciTE Abbreviations Manager {new}| AutoIt Path Switcher | AutoIt Menu for Opera! | YouTube Download Center! | Desktop Icons Restorator | Math Tasks | KeyBoard & Mouse Cleaner | CaptureIt - Capture Images Utility | CheckFileSize Program

AutoIt_Icon_small.pngUDFs: OnAutoItErrorRegister - Handle AutoIt critical errors {new}| AutoIt Syntax Highlight {new}| Opera Library! | Winamp Library | GetFolderToMenu | Custom_InputBox()! | _FileRun UDF | _CheckInput() UDF | _GUIInputSetOnlyNumbers() UDF | _FileGetValidName() UDF | _GUICtrlCreateRadioCBox UDF | _GuiCreateGrid() | _PathSplitByRegExp() | _GUICtrlListView_MoveItems - UDF | GUICtrlSetOnHover_UDF! | _ControlTab UDF! | _MouseSetOnEvent() UDF! | _ProcessListEx - UDF | GUICtrl_SetResizing - UDF! | Mod. for _IniString UDFs | _StringStripChars UDF | _ColorIsDarkShade UDF | _ColorConvertValue UDF | _GUICtrlTab_CoverBackground | CUI_App_UDF | _IncludeScripts UDF | _AutoIt3ExecuteCode | _DragList UDF | Mod. for _ListView_Progress | _ListView_SysLink | _GenerateRandomNumbers | _BlockInputEx | _IsPressedEx | OnAutoItExit Handler | _GUICtrlCreateTFLabel UDF | WinControlSetEvent UDF | Mod. for _DirGetSizeEx UDF
 
AutoIt_Icon_small.pngExamples: 
ScreenSaver Demo - Matrix included | Gui Drag Without pause the script | _WinAttach()! | Turn Off/On Monitor | ComboBox Handler Example | Mod. for "Thinking Box" | Cool "About" Box | TasksBar Imitation Demo

Like the Projects/UDFs/Examples? Please rate the topic (up-right corner of the post header: Rating AutoIt_Rating.gif)

* === My topics === *

==================================================
My_Userbar.gif
==================================================

 

 

 

AutoIt is simple, subtle, elegant. © AutoIt Team

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...