Replace Problem



  • Guten Abend allerseits.

    Ich wollte ein Programm schreiben, welches einen DNA-Strang einliest und danach einen komplementären Strang bildet, die mRNA.

    Aber zu meinem Unglück bleibt er bei diesem Code in der Schleife hängen, obwohl alle "A"s durch U ersetzt werden. 😕

    while(rna->Contains("a"))
    		{
    			rna->Replace("a","u");
    			Console::WriteLine("Die Base A wurde komplementiert!");
    			Console::WriteLine(rna);
    		}
    

    LG



  • Aber zu meinem Unglück bleibt er bei diesem Code in der Schleife hängen, obwohl alle "A"s durch U ersetzt werden.

    Werden sie, aber nicht in rna.

    Der Typ System::String ist immutable, d.h. es können keine Änderungen an Instanzen vorgenommen werden. Bei Replace z.B. wird ein neuer, veränderter String zurückgegeben. Ausserdem werden alle vorkommenden Zeichen ersetzt, nicht bloss das erste.

    http://msdn.microsoft.com/de-de/library/fk49wtc1.aspx



  • Achsooo

    Okay das erklärt einiges.

    Dankeschön. Hat mit sehr weitergeholfen ! 🙂



  • Jetzt habe ich das problem, dass dieser code irgendwie nicht klappt ...

    String^ mRNAa = dna->Replace("A","U");
    			String^ mRNAat = mRNAa->Replace("T","A");
    			String^ mRNAatc = mRNAat->Replace("C","G");
    			String^ mRNAatcg = mRNAatc->Replace("G","C");
    
    			String^ edge = mRNAatcg->Replace("3","5");
    			String^ mRNA = edge->Replace("5","3");
    
    			Console::WriteLine(mRNA);
    

    A und T werden ersetzt, aber C wird nicht ersetzt, dennoch aber G.

    Der gleiche Fall besteht mit 3.

    LG



  • Da hilft für gewöhnlich Debuggen.



  • das klappt nicht. scheint was an meinem ms vc++ nicht richtig zu sein.

    Gäbe es da nicht eine Möglichkeit, dass so hinzukriegen ?



  • Ja, gibt es.



  • Bearfist schrieb:

    String^ mRNAatc = mRNAat->Replace("C","G");
    String^ mRNAatcg = mRNAatc->Replace("G","C");

    Ist dir klar, warum das nicht funktionieren kann? Die zweite Anweisung ersetzt auch alle Gs aus der ersten wieder durch Cs.

    Du musst einen Platzhalter verwenden, damit das nicht passiert.

    C -> X
    G -> C
    X -> G



  • Ich war gestern etwas unkonzentriert ^^

    hab gestern abend nochmal nachgedacht und dann hatte ich die "C"s durch "g"s ersetzt und nachdem die "G"s ersetzt wurden hatte ich die "g"s durch "G"s ersetzt.

    Also quasi dass gleich, wie du mir vorgeschlagen hast 😉

    Danke für die Hilfe ! 👍 🙂


Anmelden zum Antworten