Effektives Ersetzen in einem String
#1
Hallo,

gegeben ist (beispielhaft!) folgendes Nachnamen-Array:

farr = Array( "Kohl", "Merkel", "Wehner", "Adenauer", "Schmidt", "Schröder","Genscher")

Jetzt habe ich Zeichenketten, die folgendermaßen aussehen:

strZ1 = "Helmut   Herbert     Gerhard    Merkel      Hans-Dietrich"
strZ2 = "Konrad   Schröder   Herbert     Gerhard    Kohl    Angela"

Wie bekomme ich die Nachnamen, also allgemeiner gesprochen die Werte die in dem Array stehen und festgelegt wurden, dass sie nicht in den Zeichenketten strZ1 und strZ2 stehen dürfen

so schnell wie möglich weg? Da die Replace Funktion ja nur Strings ersetzt, müßte ja hier mühselig eine Schleife durchlaufen werden.
Top
#2
Hallo,
(26.04.2017, 15:25)Elke Boese schrieb: müßte ja hier mühselig eine Schleife durchlaufen werden.

Was genau ist daran "mühselig"? Mir fällt kein anderer Weg ein.
Top
#3
Hallo Elke,

richtig erkannt. Dann machen wir doch einen String draus Smile

Code:
Sub test()
arr1 = Array("a", "b", "c")
str1 = Join(arr1, ",")
str1 = Replace(str1, "b", "")
arr1 = Split(str1, ",")
End Sub

Du erhälst so statt b ein leeres Feld. Ist das nicht erwünscht, müsste man noch die Kommata behandeln. Statt Komma gehen natürlich auch andere Trennzeichen, je nachdem, was eindeutig passt.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#4
TE möchte aber statt

strZ1 = "Helmut   Herbert     Gerhard    Merkel      Hans-Dietrich"
strZ2 = "Konrad   Schröder   Herbert     Gerhard    Kohl    Angela"

richtig haben:

strZ1 = "Helmut   Herbert     Gerhard   Hans-Dietrich"
strZ2 = "Konrad   Herbert     Gerhard    Angela"


Daher musst Du tatsächlich das ganze Array für Replace durchlaufen, wie Jonas schon schrieb. In einer Schleife.
Top
#5
Hallöchen,
Schleife? Da sage ich nach wie vor nein.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#6
@André

danke für deinen Post. Habe die Sache dann gestern abend auf der Grundlage deines Beitrages versucht. Kriege ich aber leider nicht hin!

Bitte zeig doch mal wie das deiner Meinung nach ohne Schleife funktionieren sollte. Danke!
Top
#7
Ich vermute, schauan hat nicht verstanden, dass ALLE Nachnamen, die im Array gelistet sind, aus den beiden Strings entfernt werden sollen, anstelle nur EINES (bei ihm: "b").
Top
#8
Hallo Lupo,
Ich denke, es ist gar nicht so schwer zu verstehen, die codezeile zu kopieren und auf einen zweiten Namen anzupassen... Ich bin nur gerade am Smartphone und da ist das getippe etwas unkomfortabel.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#9
Daran krankt es, denn Dein Name ist ein Inhalt, keine Variable. Elke möchte aber das Array mit egal welchem Inhalt auf die beiden Strings anwenden.
Top
#10
Hallo lupo,

Dein strz2 ist z. B. Ein string. Da tauschst Du erst den Herbert durch den Gerhard aus, dann den Schröder durch denHerbert und zum Schluss nimmst Du den Kohl mit nix raus. Alles 3 mit 3 replace und ggf noch eine Trennzeichenkorrektur um das Array zu kürzen.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste