String beginnt mit

  • Hallo,

    habe folgende einen Stings Bsp.
    "C0047D333.test.com"
    "S00r7D333.test2.de.00.com"
    "M00f7D333.teste.com"


    1. Möchte reagieren wenn ein String mit einem "C" beginnt. wie mache ich das?
    2. Möchte alles nach dem ersten Punkt Löschen

    also soll es so ausehen.
    C0047D333

    Wie mache ich das?

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

    Einmal editiert, zuletzt von subzero007 (28. April 2010 um 21:59)

  • Mit StringRegExp gehts sicher auch irgendwie,
    aber so würd ichs jetzt spontan machne:
    aber erst mit StringSplit nach @CRLF splitten (um alle Zeilen in ein Array zu kriegen).
    Dann mit einer For-Schleife die Zeilen durchlaufen,
    und mit StringLeft() arbeiten.
    Wenn die besagte Zeile mit C anfängt, könnte man nochma Splitten nach einem Punkt, oder mit _StringBetween arbeiten

  • Stringleft das war das stichwort. Danke

    Aber alles nach dem ersten Punkt löschen geht leider nicht da die zeichen unterschiedlich sind und stringbetween ist ja auch alles dynamisch und unterschiedlich?

    Hat jemand einen regexp für mich Wie ich alles nach dem ersten Punkt löschen kann?

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • Stringleft das war das stichwort. Danke

    Aber alles nach dem ersten Punkt löschen geht leider nicht da die zeichen unterschiedlich sind und stringbetween ist ja auch alles dynamisch und unterschiedlich?

    Hat jemand einen regexp für mich Wie ich alles nach dem ersten Punkt löschen kann?

    WIe ich schon sagte, nochmal mit StringSplit nach . splitten, dann ist im entstehenden array das erste element ([1]) das gefragte

  • kriege diesen fehler:

    [autoit]

    #Include <string.au3>
    $str=_StringBetween("C0047D333.test.com","",".")
    msgbox(0,"",$str)

    [/autoit]


    01.au3 (3) : ==> Subscript used with non-Array variable.:
    msgbox(0,"",$str[0])
    msgbox(0,"",$str^ ERROR
    ->18:26:17 AutoIT3.exe ended.rc:1

    Was läuft falsch?

    lg SubZero ;)
    ==========================================================================

    "Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral."

  • StringBetween liefert ein Array zurück also so:

    [autoit]

    #Include <string.au3>
    $str=_StringBetween("C0047D333.test.com","",".")
    msgbox(0,"",$str[0])

    [/autoit]
  • Spoiler anzeigen
    [autoit]

    $s1="C0047D333.test.com"

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

    ConsoleWrite(_unkreativ($s1, "C") & @CRLF)
    ConsoleWrite(_unkreativ2($s1, ".") & @CRLF)

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

    Func _unkreativ($sstring, $ssearch)
    If StringLeft($sstring, 1) = $ssearch then
    return true
    else
    Return false
    endif
    endfunc

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

    func _unkreativ2($sstring, $ssearch)
    return StringTrimRight($sstring, StringInStr($sstring, $ssearch))
    endfunc

    [/autoit]

    edit \ So stimmts nu aber 8)

    2 Mal editiert, zuletzt von nuts (28. April 2010 um 18:55)

  • Wenn schon so, deins liefert ja irgendwie das falsche :D

    [autoit]

    $s1="Chh0047D333.test.com"

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

    ConsoleWrite(_unkreativ($s1, "C") & @CRLF)
    ConsoleWrite(_unkreativ2($s1, ".") & @CRLF)

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

    Func _unkreativ($sstring, $ssearch)
    If StringLeft($sstring, 1) = $ssearch then
    return true
    else
    Return false
    endif
    endfunc

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

    func _unkreativ2($sstring, $ssearch)
    return StringLeft($sstring, StringInStr($sstring, $ssearch)-1)
    endfunc

    [/autoit]
  • Ist richtig - Thema verfehlt :D
    Habs oben geändert.

    Deins ist immernoch falsch O_o ;)
    Ist doch auch logisch.
    Wenn du mit StringTrim arbeiten willst, musste ja wenn schon (Gesamtlänge-längerichtiges) von rechts aus abschneiden, einfacher ists aber einfach das richtige von links aus zu nehmen.

  • Mal eben auf die schnelle:

    Spoiler anzeigen
    [autoit]

    #include <array.au3>

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

    #cs

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

    ClipPut('"C0047D333.test.com"'&@CRLF&'"S00r7D333.test2.de.00.com"'&@CRLF&'"M00f7D333.teste.com"'); Simulation von STRG+C (auf die schnelle hand gemacht^^)

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

    ClipPut(StringReplace(ClipGet(),'"',""))
    $a=StringReplace(StringStripCR(ClipGet()),@LF,"")
    $b=StringRegExp($a,"^C[^\.]+",3);Statt $a müsste jeweils der einzeilige string übergeben werden
    _ArrayDisplay($b)

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

    #ce
    ;spezieller test von "C0047D333.test.com":

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

    $a = "C0047D333.test.com"
    $b=StringRegExp($a,"^C[^\.]+",3)
    _ArrayDisplay($b,"Ergebnis")

    [/autoit]

    Wer immer nur das tut, was er bereits kann - wird auch immer nur das bleiben, was er bereits ist!

  • also soll es so ausehen.
    C0047D333

    Zitat von qon

    True
    C0047D33

    das kommt bei deinem raus, merkste nix? :)
    wennde zB hinter das C noch 5 andere buchstaben setzt, wirds vll klarer


    die Ausgabe von @Nut 's 2. Post:

    Code
    True
    Chh0047D333

    stimmt doch,

    mfg (Auto)Bert

  • in nuts erstem post is das script ;)
    un das funktioniert nicht, wie gewünscht..
    das zweite war von mir, mit einer kleinen aber entscheidenden änderung, nämlich statt StringTrimLeft einfach StringLeft, und -1
    ist nun aber auch egal