VBA String zerlegen
Hallo,
folgender String
string = "<Path>C:/Music/Abba/Abba Gold/money.mp3</Path>"
möchte ich so zerlegt haben das er wie folget in der Variablen steht
string = "*money.mp3*"
die Sternchen benötige ich als Jokerzeichen. Und müssen auch vorhanden sein.
Habe mehrere solche Strings *.mp3, die immer so *SongName.mp3* in String stehen sollen:
<Path>C:/Music/Abba/Abba Gold/Waterloo.mp3</Path>
<Path>C:/Music/money.mp3/Abba/Abba Gold/</Path>
Vllt weiß auch einer eine Lösung wenn der SongName.mp3 an irgendeiner Stelle im String steht, Bsp.:
<Path>C:/Music/money.mp3/Abba/Abba Gold/</Path>
<Path>C:/Music/Abba/Mama Mia.mp3/Abba Gold</Path>
Bitte um Hilfe.
Grüße
Phoboz
folgender String
string = "<Path>C:/Music/Abba/Abba Gold/money.mp3</Path>"
möchte ich so zerlegt haben das er wie folget in der Variablen steht
string = "*money.mp3*"
die Sternchen benötige ich als Jokerzeichen. Und müssen auch vorhanden sein.
Habe mehrere solche Strings *.mp3, die immer so *SongName.mp3* in String stehen sollen:
<Path>C:/Music/Abba/Abba Gold/Waterloo.mp3</Path>
<Path>C:/Music/money.mp3/Abba/Abba Gold/</Path>
Vllt weiß auch einer eine Lösung wenn der SongName.mp3 an irgendeiner Stelle im String steht, Bsp.:
<Path>C:/Music/money.mp3/Abba/Abba Gold/</Path>
<Path>C:/Music/Abba/Mama Mia.mp3/Abba Gold</Path>
Bitte um Hilfe.
Grüße
Phoboz
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 202179
Url: https://administrator.de/contentid/202179
Ausgedruckt am: 24.11.2024 um 23:11 Uhr
15 Kommentare
Neuester Kommentar
Hi Phoboz,
nach dem Muster deiner Stringdaten kannst du mit folgendem RegularExpression-Objekt dein MP3 an jeder Stelle zwischen den "<path>"-Tags platzieren:
Das Ergebnis steht dann in ResultString.
Grüße Uwe
nach dem Muster deiner Stringdaten kannst du mit folgendem RegularExpression-Objekt dein MP3 an jeder Stelle zwischen den "<path>"-Tags platzieren:
Das Ergebnis steht dann in ResultString.
Dim myRegExp, myMatches, ResultString,rawData
rawData = "<Path>C:/Music/Abba/Abba Gold/Waterloo.mp3</Path>"
Set myRegExp = New RegExp
myRegExp.IgnoreCase = True
myRegExp.Pattern = "<Path>.*/(.*.mp3).*</Path>"
Set myMatches = myRegExp.Execute(rawData)
If myMatches.Count >= 1 Then
ResultString = "*" & myMatches(0).SubMatches(0) & "*"
Else
ResultString = ""
End If
Grüße Uwe
OK da will wohl einer wieder schummeln
Nach der altertümlichen Weise geht das so:
Nur darf bei dieser Methode dein Dateiname oder der Pfad keine weiteren Punkte haben.
8-) Uwe
Nach der altertümlichen Weise geht das so:
SearchString = "<Path>C:/Music/money.mp3/Abba/Abba Gold/</Path>"
Suche = "."
' Suche den Punkt und gehe 3 Zeichen nach rechts -> jetzt haben wir das Position für das Ende des Dateinamens
PositionEnd = InStr(1, SearchString, Suche)+3
'Suche vom Ende des Dateinamens rückwärts nach dem ersten "/" und gehe 1 Zeichen nach rechts -> Das ist die StartPosition des Dateinamens
PositionStart = InStrRev(SearchString,"/",PositionEnd)+1
'Nun wird der ganze Dateiname extrahiert. Die Länge ermitteln wir indem wir die Endposition von der Startposition abziehen
filename = Mid(SearchString,PositionStart,PositionEnd-PositionStart)
Loesung = "*" & filename & "*"
wscript.Echo Loesung
Nur darf bei dieser Methode dein Dateiname oder der Pfad keine weiteren Punkte haben.
8-) Uwe
War zu langsam. Mit VBA zu programmieren ist für mich ein krampf.....
Keine schöne Lösung, aber trotzdem:
Keine schöne Lösung, aber trotzdem:
Sub SrString()
Dim string1 As String
Dim teilstring1 As Variant
Dim z As Integer
z = 1
string1 = "<Path>C:/Music/money.mp3/Abba/Abba Gold/</Path>"
String2 = "<Path>C:/Music/Abba/Abba Gold/Waterloo.mp3</Path>"
String3 = "<Path>C:/Music/money.mp3/Abba/Abba Gold/</Path>"
Position = InStr(8, string1, Suche) 'sucht mir die Position wo der Punkt ist.
teilstring1 = Split(string1, ".")
Teil2 = Left(teilstring1(1), "3")
Do
If (InStr(Right(teilstring1(0), z), "/") > 0) Then
Exit Do
End If
z = z + 1
Loop
Teil1 = Right(teilstring1(0), z - 1)
Teil1 = Teil1 & "."
Lösung = Teil1 & Teil2
MsgBox Lösung 'Soll mir "Waterloo.mp3" ausgeben
Lösung = "*" & Lösung & "*" 'Sternchen vor und hinter den String
'benötigtes Ergbnis "*Waterloo.mp3*"
End Sub
Wenn es nur zwei eckige Klammern sind:
oder
Zieh dir das hier bitte mal rein :http://www.w3schools.com/vbscript/vbscript_ref_functions.asp
Denke das der Thread gelöst ist. Das ist hier kein VBA-Kurs.
Grüße Uwe
Right(DeinString,Len(DeinString)-2)
Mid(DeinString,3,Len(DeinString))
Zieh dir das hier bitte mal rein :http://www.w3schools.com/vbscript/vbscript_ref_functions.asp
Denke das der Thread gelöst ist. Das ist hier kein VBA-Kurs.
Grüße Uwe
Hallo
Warum nicht einfach so?:
Warum nicht einfach so?:
Sub LiedSuche()
Dim endpos As Long
Dim startpos As Long
Dim Lösung As String
String1 = "<Path>C:/Music/money.mp3/Abba/Abba Gold/</Path>"
String2 = "<Path>C:/Music/Abba/Abba Gold/Waterloo.mp3</Path>"
String3 = "<Path>C:/Music/money.mp3/Abba/Abba Gold/</Path>"
endpos = InStrRev(LCase(String1), ".mp3")
If endpos > 0 Then
startpos = InStrRev(LCase(String1), "/", endpos)
lösung = "*" & Mid(String1, startpos + 1, endpos - startpos + 3) & "*"
Else
MsgBox """.mp3"" not found"
End If
MsgBox lösung
End Sub