C/C++
Von: wеrјuеrgеnwаѕ, 10.4.2010 09:56 Uhr
Hallo Zusammen,
ich hab ein Problem. Ich habe einen String mit einer zusammenhängenden Zeichenfolge

$string="AGHPQRTXHXSLOKPJGKLUA"

ich will diesen String nun an bestimmen Stellen schneiden:
Immer nach dem Buchstaben "K" oder "R" aber nur sofern auf diese Buchstaben kein "P" folgt!

Das Ergebnis sollte dann ein Array sein das in diesem Beispiel so aussieht:
"AGHPQR" "TXHXSLOKPJGK" "LUA"

Wie könnte ich sowas anstellen?

Gruß Jürgen



  1. Antwort von Lеnа (abgemeldet) 0
    Re: perl string schneiden und in ein array speichern
    Hallo Jürgen,

    Ich denke mit Split ist es ein bisschen unglücklich, weil das ja die Grenzen nochmal extra separiert und ins Array speichert. Wie man das elegant lösen kann hab ich auch auf die Schnelle nicht rausgefunden, aber ich kann Dir eine unelegante Lösung anbieten:




    #!/usr/bin/perl


    my $string="AGHPQRTXHXSLOKPJGKLUAAGHPQRTXHXSLOKPJGKLUA";

    print"\n\nSo solls aussehen:\nAGHPQR TXHXSLOKPJGK LUA\n\n";

    my @array;
    while ($string =~ m/([^RK]+([RK]|(.+$)))/g) {
    my $grade = $1;
    if($grade =~ m/^[^P]\w+/) {
    push(@array, $grade);
    }else{
    my $grade2 = pop(@array);
    $grade2.=$grade;
    push(@array, $grade2);
    }
    }

    print "\n\n@array";




    Das sucht einfach die Rs und Ks raus und überprüft im zweiten Schritt, ob ein P folgt. Je nachdem wie lang die Strings sind, kann das aber länger bei der Ausführung brauchen, das konnte ich nicht so testen :)

    Liebe grüße
    Lena
    • Antwort von kudlаtү (abgemeldet) 0
      Re: perl string schneiden und in ein array speichern
      Hallo,

      eine Möglichkeit wäre z.B. diese:

      $string =~ s/([rk])([^p])/$1\n$2/gi;
      @array = split(/\n/i, $string);


      Tschö,
      Sascha
      • Antwort von Νоrbеrt Wісһt (abgemeldet) 0
        Re: perl string schneiden und in ein array speichern
        so sollte es klappen

        #######################################################################
        # VBString2Array {
        # Aus VB-String einen Array machen
        der String wird bei jedem Vorkommen von xa0 oder x20 geschnitten und im Array abgelegt
        ################

        sub VB2A {
        my ($temp) = @_;
        my @out = split(/ /,$temp);
        for (@out) {
        if ($_) {
        s/\xa0/\x20/g;
        } else {
        $_ = '';
        }
        }
        return @out;
        }