Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Muster in einem String ersetzen
#1
Hallo,

habe folgendes Problem bzw. Frage.
Ich möchte in dem String, zString, alle Zeichen rechts vom runden Klammerzeichen ) und links vor dem eckigen Klammerzeichen [ ersetzen.
Dazu habe ich mal ein kleines funktionierendes Programm geschrieben. Ich frage mich aber, ob man das nicht auch viel leichter hinbekommt.
Da bei euch im Forum hier einige VBA Virtuosen sind, werft doch bitte mal einen Blick drauf. Vielleicht geht so etwas viel besser.
Oder vielleicht habe ich ja auch selbst den bestmöglichen Code diesbezüglich geschrieben. (Ha, ha, ha - Ironie aus!)
Danke im voraus.



Code:
Sub Muster_ersetzen()
Dim zString$, zNeu$, vbX$
zString = "55.) Hier steht dann irgendwas.[15[1"
vbX = String(Len(Split(Split(zString, ".)")(1), "[")(0)), " ")
zNeu = Replace(zString, Split(Split(zString, ".)")(1), "[")(0), vbX)
End Sub
Antworten Top
#2
Hallo,

mit einer Formel:


Code:
=TEIL(D4;SUCHEN(")";D4)+1;SUCHEN("[";D4)-SUCHEN(")";D4)-1)
Mit VBA:

Code:
Sub test()
Cells(4, 5) = Mid(Cells(4, 4), InStr(Cells(4, 4), ")") + 1, InStr(Cells(4, 4), "[") - InStr(Cells(4, 4), ")") - 1)
End Sub
oder:

Code:
Sub test2()
Dim zString$
zString = "55.) Hier steht dann irgendwas.[15[1"
zString = Mid(zString, InStr(zString, ")") + 1, InStr(zString, "[") - InStr(zString, ")") - 1)
End Sub
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#3
Hallo,

eine Alternative mit RefEx


Code:
zString = "55.) Hier steht dann irgendwas.[15[1"

.Pattern = "\)(.+)["

und dann das SubMatch auslesen.

mfg
Antworten Top
#4
@Fennek
bitte führe dies nochmal etwas weiter aus. Die VBA Programmierung mit einem Pattern bekomme ich ansonsten nicht hin.
Hier bräuchte ich schon mal eine Schritt für Schritt Anleitung.
Danke.


Zusammenfassung bisher:

Code:
Sub Muster_ersetzen()
'Eigener Code
Dim zString$, zNeu$, vbX$, strText$, zText$
zString = "55.) Hier steht dann irgendwas.[15[1"
vbX = String(Len(Split(Split(zString, ".)")(1), "[")(0)), " ")
zNeu = Replace(zString, Split(Split(zString, ".)")(1), "[")(0), vbX)

'Code von Edgar: / anders aber nicht kürzer
zText = Mid(zString, InStr(zString, ")") + 1, InStr(zString, "[") - InStr(zString, ")") - 1)
zText = Replace(zString, zText, String(Len(zText), " "))

End Sub
Antworten Top


Gehe zu:


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