String nach 2 stelligen Zahlen durchsuchen...???

  • Hallo,

    ich möchte mit folgendem code, 2,3 oder auch 4 stellige zahlen finden und auslesen... komm jedoch auf keinen nenner.
    Wäre nett wenn ihr mir helfen könntet..

    [autoit]


    #include <File.au3>

    [/autoit][autoit][/autoit][autoit]

    Global $stanz_2=FileRead(@ScriptDir&"\stanz.txt")
    msgbox (0,"Ürsprünglicher string",$stanz_2)
    For $i = 1 To _FileCountLines(@ScriptDir&"\stanz.txt")
    $sText=StringStripWs (StringLeft (FileReadLine (@ScriptDir&"\stanz.txt",$i),4),8)

    [/autoit][autoit][/autoit][autoit]

    If StringLen($sText) < 3 then
    $sText=StringLeft (FileReadLine (@ScriptDir&"\stanz.txt",$i),2)
    EndIf
    msgbox(0,"Finde Zahlen vor dem Tab...",$sText)

    [/autoit][autoit][/autoit][autoit]

    For $j = 1 To _FileCountLines(@ScriptDir&"\stanz.txt")
    $sText2=StringTrimLeft(FileReadLine(@ScriptDir&"\stanz.txt",$i),4)
    Next

    [/autoit][autoit][/autoit][autoit]

    MsgBox(0,"Formatierter String...",$sText2)
    Next

    [/autoit]

    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

  • speziell auf diese Text bezogen würde ichs so machen:

    [autoit]

    $string = StringStripWS(FileReadLine(@scriptdir & "\stanz.txt", $i), 8)

    [/autoit][autoit][/autoit][autoit]

    $aRegExp = StringRegExp($string, "(\d+)\dStk\.\{(\d+)\}", 2)

    [/autoit][autoit][/autoit][autoit]

    _ArrayDisplay($aRegExp)

    [/autoit]

    Sind das die Werte, die du wolltest?

  • muss auch mal meinen Senf dazugeben

    Spoiler anzeigen
    [autoit]

    $NO=StringSplit("A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,.,{,}",",")
    $file=@ScriptDir&"\stanz.txt"
    $op=FileOpen($file,0)
    If @error Then Exit
    $output=""
    While 1
    $read=FileReadLine($op)
    If @error Then ExitLoop
    For $i=1 To $NO[0]
    $read=StringReplace($read,$no[$i],"")
    Next
    $output=$output&$read&@CRLF
    WEnd
    MsgBox(0,"",$output)

    [/autoit]
    • Offizieller Beitrag

    Alle 2 Stellige Zahlen finden:

    [autoit]

    $ergebnis = Stringregexp($String,"(?<![0-9])(?:[0-9]{2})(?![0-9])",3)

    [/autoit]


    oder

    [autoit]

    $ergebnis = Stringregexp($String,"(?<!\d)(?:\d{2})(?!\d)",3)

    [/autoit]

    Alle 3 Stellige Tahlen finden:

    [autoit]

    $ergebnis = Stringregexp($String,"(?<![0-9])(?:[0-9]{3})(?![0-9])",3)

    [/autoit]


    $ergebnis ist ein Array.

  • Raupi
    Bei deinem Beispiel meldet er auch funde bei zahlen mit mehr stellen als 2...

    @dsgamer
    Von deinem Beispiel hab ich mal ein Screenshot gemacht, hilft mir auch nicht weiter..
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. @

    @Rodny
    du entfernst nur die Char´s aus dem string...

    @all
    Ich benötige dies um item´s in meiner listview genau mit diesen werten zu finden um genau auf deren index, in der spalte daneben items ( "x Stk {50}") einzufügen.
    Ursprünglicher Code: (damit man sehen kann was ich vorhabe..)

    Spoiler anzeigen
    [autoit]


    Func stk_hinzufuegen2()

    [/autoit] [autoit][/autoit] [autoit]

    FileWrite(@TempDir&"\stanz.txt",$stanz_2)
    For $i = 1 To _FileCountLines(@TempDir&"\stanz.txt") ;zähle die Einträge in stanz.txt
    $sText=StringStripWs (StringLeft (FileReadLine (@TempDir&"\stanz.txt",$i),4),8);entferne alle leerstellen aus den ersten 4 zeichen aus stanz.txt
    $pasteindex = _GUICtrlListView_FindText($ListView1,$sText); finde itemindex über suche von $sText
    For $j = 1 To _FileCountLines(@TempDir&"\stanz.txt");zähle Einträge in stanz.txt
    $sText2=StringTrimLeft(FileReadLine(@TempDir&"\stanz.txt",$i),4);lösche die ersten vier zeichen jedes eintrages
    _GUICtrlListView_SetItemText(GUICtrlGetHandle($ListView1), $pasteindex,$sText2,2);setzt den restlichen text - bei gefundenen index, in der Liste
    Next
    Next
    FileDelete(@TempDir&"\stanz.txt")

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit]
    • Offizieller Beitrag

    Deine Stanz.txt zugrundeliegend sollte es so gehen:

    [autoit]

    #include <Array.au3>
    $String = "85 2 Stk. { 50 }"&@crlf&"90 2 Stk. { 50 }"&@crlf&"100 2 Stk. { 50 }"&@crlf&"123 2 Stk. { 50 }"
    MsgBox(0,"Teststring",$String)
    $ergebnis = Stringregexp($String,"(?<=\A|\n)(?:\d{2})(?!\d)",3)
    _ArrayDisplay($ergebnis)

    [/autoit]
  • also ich würde das so machen:

    [autoit]

    #include <Array.au3>
    #include <file.au3>

    [/autoit][autoit][/autoit][autoit]

    Global $ergebnis, $t, $rest[1]
    _FileReadToArray("stanz.txt",$ergebnis)
    For $i = 1 To UBound($ergebnis)-1
    $t = StringSplit($ergebnis[$i],@TAB)
    _ArrayAdd($rest,$t[1])
    Next
    $rest[0] = UBound($rest)-1
    _ArrayDisplay($rest)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    über mich...

    ich habe meine Erfahrungen hauptsächlich gesammelt in (grobe Übersicht):

    - RibbonBar Automation
    - MySQL Nutzung
    - GUIs in vielerlei Ausprägung
    - Nutzung von Powershell / Batch in AutoIt
    - Windows Automatisierung

    außerhalb von AutoIt:

    - Sprachen: PS, Batch, php, html(5), javascript, (perl eingeschränkt), vbs
    - Powershell (AD, WPF inkl. Multi-Threading, ...)
    - Deployment-Automatisierung ohne SCCM
    - Office-Nutzung mit COM-Object (AutoIt, PowerShell)
    - ActiveDirectory und alles was damit zusammenhängt
    - Hyper-V Clustering (Converged / Hyper Converged)
    - Serverhardware (Konfiguration, Aufbau, Architektur, Betrieb)

    Lieblingsthema:

    günstige Automatisierung von Vorgängen, für die andere Firmen viel Geld nehmen

    more to come ...

    • Offizieller Beitrag

    Schnuffel er will alle 2 stelligen Zahlen aus der 1. Spalte haben. Wenn er mir das jetzt richtig erklärt hat .

    [autoit]

    #include <Array.au3>
    #include <file.au3>

    [/autoit][autoit][/autoit][autoit]

    Global $ergebnis, $t, $rest[1]
    _FileReadToArray("stanz.txt",$ergebnis)

    [/autoit][autoit][/autoit][autoit]

    For $i = 1 To UBound($ergebnis)-1
    $t = StringSplit($ergebnis[$i],@TAB)
    If StringLen($t[1]) = 2 Then _ArrayAdd($rest,$t[1])
    Next
    _ArrayDelete($rest,0)
    _ArrayDisplay($rest)

    [/autoit]
  • Zitat

    ich möchte mit folgendem code, 2,3 oder auch 4 stellige zahlen finden und auslesen...

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    über mich...

    ich habe meine Erfahrungen hauptsächlich gesammelt in (grobe Übersicht):

    - RibbonBar Automation
    - MySQL Nutzung
    - GUIs in vielerlei Ausprägung
    - Nutzung von Powershell / Batch in AutoIt
    - Windows Automatisierung

    außerhalb von AutoIt:

    - Sprachen: PS, Batch, php, html(5), javascript, (perl eingeschränkt), vbs
    - Powershell (AD, WPF inkl. Multi-Threading, ...)
    - Deployment-Automatisierung ohne SCCM
    - Office-Nutzung mit COM-Object (AutoIt, PowerShell)
    - ActiveDirectory und alles was damit zusammenhängt
    - Hyper-V Clustering (Converged / Hyper Converged)
    - Serverhardware (Konfiguration, Aufbau, Architektur, Betrieb)

    Lieblingsthema:

    günstige Automatisierung von Vorgängen, für die andere Firmen viel Geld nehmen

    more to come ...