Ersetze 2 Strings gleichzeitig?

8

Wie kann ich 2 Saiten gleichzeitig ersetzen? Nehmen wir zum Beispiel an, dass ich eine Zeichenfolge wie folgt habe:

str1="AAAA BBBB CCCC DDDD"

ich möchte jedes "AAAA" durch "CCCC" und jedes "CCCC" durch "AAAA" ersetzen, aber wenn ich das tat:

str1.gsub ("AAAA", "CCCC") # CCCC BBBB CCCC DDDD

str1.gsub ("CCCC", "AAAA") # AAAA BBBB AAAA DDDD

was ich str1 möchte " CCCC BBBB AAAA DDDD"

    
Outlaw Programmer 07.02.2009, 17:19
quelle

3 Antworten

14

Allgemeine Antwort:
Verwenden Sie einen Regex, um AAAA und CCCC zu vergleichen, und ersetzen Sie dann jedes Match durch CCCC und AAAA.

Bearbeiten , um die Verwirrung zu beseitigen

%Vor%

edit Ich dachte auch eleganter:)

%Vor%     
Iraimbilanja 07.02.2009, 17:24
quelle
0

Ist es eine Option für Sie, zuerst AAAA durch etwas anderes zu ersetzen und dann fortzufahren?

%Vor%     
JMD 07.02.2009 17:25
quelle
0

Eine Lösung (obwohl etwas, das auf Regex basiert, am besten wäre) wäre etwas in der Art, einen Ersatz-Hash als solchen zu erstellen, der nach Bedarf erweitert werden kann. Ich füge das schnell zusammen, um das zu demonstrieren. Ich bin mir sicher, mit ein wenig mehr Liebe und Sorgfalt können Sie etwas eleganteres entwickeln, das genau so funktioniert, wie diese Implementierung nur für Strings mit Leerzeichen funktioniert.

%Vor%     
Hates_ 07.02.2009 18:02
quelle

Tags und Links