Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst VBA String zerlegen

Mitglied: Phoboz

Phoboz (Level 1) - Jetzt verbinden

22.02.2013 um 08:21 Uhr, 6382 Aufrufe, 15 Kommentare

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
Mitglied: LordXearo
22.02.2013 um 08:49 Uhr
Hi,

du könntest z.B. nach dem . (Punkt) im String suchen und dann alle Zeichen davor und danach speichern bis zum "/" .

Gruß

Xearo
Bitte warten ..
Mitglied: Phoboz
22.02.2013, aktualisiert um 09:37 Uhr
Hallo,

da es Strings gibt wo nach .mp3 ein "<"kommt muss man das rechts gehen ein bisschen anders gestalten. Z.B. gehe ab "." 4 nach rechts
bin soweit brauch allerdings Hilfe.

01.
Sub SrString() 
02.
 
03.
'Strings 
04.
 
05.
String1 = "<Path>C:/Music/money.mp3/Abba/Abba Gold/</Path>" 
06.
String2 = "<Path>C:/Music/Abba/Abba Gold/Waterloo.mp3</Path>" 
07.
String3 = "<Path>C:/Music/money.mp3/Abba/Abba Gold/</Path>" 
08.
Suche = "." 
09.
 
10.
Position = InStr(8, String1, Suche) 'sucht mir die Position wo der Punkt ist. 
11.
Teil1 = Mid(String1, Position, 4) '= ".mp3" 
12.
Teil2 = "?" 'gehe von Postion solange nach links bis "/" 
13.
Lösung = Teil1 & Teil2 
14.
 
15.
MsgBox Lösung 'Soll mir "Waterloo.mp3" ausgeben 
16.
 
17.
 
18.
Lösung = "*" & Lösung & "*" 'Sternchen vor und hinter den String 
19.
'benötigtes Ergbnis "*Waterloo.mp3*" 
20.
 
21.
End Sub
Bitte warten ..
Mitglied: colinardo
22.02.2013, aktualisiert um 09:50 Uhr
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.
01.
Dim myRegExp, myMatches, ResultString,rawData 
02.
rawData = "<Path>C:/Music/Abba/Abba Gold/Waterloo.mp3</Path>" 
03.
Set myRegExp = New RegExp 
04.
myRegExp.IgnoreCase = True 
05.
myRegExp.Pattern = "<Path>.*/(.*.mp3).*</Path>" 
06.
Set myMatches = myRegExp.Execute(rawData) 
07.
If myMatches.Count >= 1 Then 
08.
	ResultString = "*" & myMatches(0).SubMatches(0) & "*" 
09.
Else 
10.
	ResultString = "" 
11.
End If
Grüße Uwe
Bitte warten ..
Mitglied: Phoboz
22.02.2013, aktualisiert um 09:57 Uhr
Hallo Uwe,

Danke

Allerdings soll ich das in VBA machen. Wenn ich deinen Code nehme krieg ich Errors
"Fehler beim Kompilieren. Benutzerdefinierter Typ nicht definiert" Zeile 3.

kann mir einer vllt die Lösung für Teil2 sagen (siehe meinen Code oben)


Grüße

Phoboz
Bitte warten ..
Mitglied: colinardo
22.02.2013, aktualisiert um 10:02 Uhr
Das ist VBA bzw. Visual Basic Script und funktioniert! Du musst in VBA noch die Verweis auf das "Microsoft VBScript Regular Expressions" Objekt hinzufügen (Menü "Extras/Verweise") wenn du das in Microsoft Office verwendest. Dann läuft es...
Bitte warten ..
Mitglied: Phoboz
22.02.2013 um 10:05 Uhr
Hallo Uwe,

Verweise ist bei mir ausgegraut (Office 2007)?

Da ich die Aufgabe von einem Lehrer erhalten habe und wir noch nicht soweit mit VBA sind... weiß ich nicht, ob er mir die Lösung abkauft

Ich bin dir dankbar, dass du den Code geschrieben hast, allerdings würde ich das iwie so machen wie ich es oben in dem Code habe... geht das iwie kannst du dir das einmal angucken ?


Grüße

Phoboz
Bitte warten ..
Mitglied: colinardo
22.02.2013, aktualisiert um 10:49 Uhr
OK da will wohl einer wieder schummeln
Nach der altertümlichen Weise geht das so:
01.
SearchString = "<Path>C:/Music/money.mp3/Abba/Abba Gold/</Path>" 
02.
Suche = "." 
03.
 
04.
' Suche den Punkt und gehe 3 Zeichen nach rechts -> jetzt haben wir das Position für das Ende des Dateinamens 
05.
PositionEnd = InStr(1, SearchString, Suche)+3 
06.
'Suche vom Ende des Dateinamens rückwärts nach dem ersten "/" und gehe 1 Zeichen nach rechts -> Das ist die StartPosition des Dateinamens 
07.
PositionStart = InStrRev(SearchString,"/",PositionEnd)+1 
08.
'Nun wird der ganze Dateiname extrahiert. Die Länge ermitteln wir indem wir die Endposition von der Startposition abziehen 
09.
filename = Mid(SearchString,PositionStart,PositionEnd-PositionStart) 
10.
 
11.
Loesung = "*" & filename & "*" 
12.
 
13.
wscript.Echo Loesung
Nur darf bei dieser Methode dein Dateiname oder der Pfad keine weiteren Punkte haben.

8-) Uwe
Bitte warten ..
Mitglied: Phoboz
22.02.2013, aktualisiert um 10:49 Uhr
Hallo,

DANKE!!!


Grüße

Phoboz
Bitte warten ..
Mitglied: LordXearo
22.02.2013 um 10:50 Uhr
War zu langsam. Mit VBA zu programmieren ist für mich ein krampf.....
Keine schöne Lösung, aber trotzdem:

01.
Sub SrString() 
02.
Dim string1 As String 
03.
Dim teilstring1 As Variant 
04.
Dim z As Integer 
05.
z = 1 
06.
string1 = "<Path>C:/Music/money.mp3/Abba/Abba Gold/</Path>" 
07.
String2 = "<Path>C:/Music/Abba/Abba Gold/Waterloo.mp3</Path>" 
08.
String3 = "<Path>C:/Music/money.mp3/Abba/Abba Gold/</Path>" 
09.
 
10.
Position = InStr(8, string1, Suche) 'sucht mir die Position wo der Punkt ist. 
11.
 
12.
teilstring1 = Split(string1, ".") 
13.
Teil2 = Left(teilstring1(1), "3") 
14.
Do 
15.
If (InStr(Right(teilstring1(0), z), "/") > 0) Then 
16.
    Exit Do 
17.
End If 
18.
z = z + 1 
19.
Loop 
20.
Teil1 = Right(teilstring1(0), z - 1) 
21.
Teil1 = Teil1 & "." 
22.
 
23.
Lösung = Teil1 & Teil2 
24.
 
25.
MsgBox Lösung 'Soll mir "Waterloo.mp3" ausgeben 
26.
Lösung = "*" & Lösung & "*" 'Sternchen vor und hinter den String 
27.
'benötigtes Ergbnis "*Waterloo.mp3*" 
28.
End Sub
Bitte warten ..
Mitglied: colinardo
22.02.2013 um 10:52 Uhr
Bitte Beitrag noch als gelöst markieren, merci !
Bitte warten ..
Mitglied: Phoboz
22.02.2013 um 11:12 Uhr
Hallo,

funktioniert super!

aber hab was bemerkt.

Ich lese den String aus einer Datei. den String den ich bekomme sieht so aus:

"[]<Path>C:/Music/Abba/Abba Gold/money.mp3</Path>"

vor dem String ist ein Viereckiges Kästchen....in der Datei ist dieser Bereich leer krieg deswegen nur müll zurück...

krieg aus dem String das viereckige Kästchen (leerer Raum) iwie weg?

hab schon Ltrim versucht
Bitte warten ..
Mitglied: colinardo
22.02.2013, aktualisiert um 11:22 Uhr
Wenn es nur zwei eckige Klammern sind:
Right(DeinString,Len(DeinString)-2)
oder
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
Bitte warten ..
Mitglied: miniversum
22.02.2013, aktualisiert um 11:20 Uhr
Hallo

Warum nicht einfach so?:
01.
Sub LiedSuche() 
02.
    Dim endpos As Long 
03.
    Dim startpos As Long 
04.
    Dim Lösung As String 
05.
     
06.
    String1 = "<Path>C:/Music/money.mp3/Abba/Abba Gold/</Path>" 
07.
    String2 = "<Path>C:/Music/Abba/Abba Gold/Waterloo.mp3</Path>" 
08.
    String3 = "<Path>C:/Music/money.mp3/Abba/Abba Gold/</Path>" 
09.
 
10.
    endpos = InStrRev(LCase(String1), ".mp3") 
11.
    If endpos > 0 Then 
12.
        startpos = InStrRev(LCase(String1), "/", endpos) 
13.
        lösung = "*" & Mid(String1, startpos + 1, endpos - startpos + 3) & "*" 
14.
    Else 
15.
        MsgBox """.mp3"" not found" 
16.
    End If 
17.
    MsgBox lösung 
18.
End Sub
Bitte warten ..
Mitglied: Phoboz
22.02.2013 um 11:23 Uhr
Hallo,

jetzt habe ich es.

Ich danke Euch allen!


*Resolved*
Bitte warten ..
Mitglied: bastla
22.02.2013, aktualisiert um 13:08 Uhr
@ colinardo
Du musst in VBA noch die Verweis auf das "Microsoft VBScript Regular Expressions" Objekt hinzufügen (Menü "Extras/Verweise")
Den Verweis brauchst Du nicht, wenn "myRegExp" einfach per
Set myRegExp = CreateObject("VBScript.RegExp")
erzeugt wird ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
PHP
String zerlegen an verschieden Stellen
Frage von ppmk22PHP3 Kommentare

ich noch mal Ich habe verschieden Strings die immer 200 Zeichen lang sind. Diesen möchte ich an bestimmten stellen ...

Batch & Shell
String zerlegen an letzem Backslash
gelöst Frage von fuguBatch & Shell4 Kommentare

Heyho ihr Supercoder ;-) Ich möchte für ein Backup-Skript eine Textdatei mit den Backup-Quellen. Die Daten einzulesen ist leicht. ...

Batch & Shell

PowerShell String zerlegen in Array, DataTable, Hashtable speichern

gelöst Frage von derhoeppiBatch & Shell7 Kommentare

Guten Morgen, leider habe wieder ein Thema beim zerlegen eines Strings. Folgendes Problem: Die Rückgabe eines Admintools liefert mir ...

Batch & Shell

String mit dynamischer Länge und enthaltenen Leerzeichen zerlegen und Variablen zuweisen

gelöst Frage von robxBatch & Shell2 Kommentare

Hallo, ich habe einen String mit dynamischer Länge und enthaltenen Leerzeichen in z.B. folgender Form: Fall 1) oder Fall ...

Neue Wissensbeiträge
Server-Hardware
HP iLO ist gefährdet (iLO 4))
Tipp von AlFalcone vor 8 StundenServer-Hardware

Gemäss Twitter und Heise gibt es eine Angriffsmöglichkeit auf iLO Quelle: iLO ist gefährdet

CMS
Erneut kritische Zero-Day-Lücke in Drupal
Tipp von Reini82 vor 17 StundenCMS

Laut einem Bericht auf t3n gibt es eine Schwere Sicherheitslücke in Drupal die auch schon ausgenutzt wird. Betroffen sind ...

Sicherheit

MikroTik-Router patchen, Schwachstelle wird ausgenutzt

Information von kgborn vor 1 TagSicherheit

Am 23. April 2018 wurde von Mikrotik ein Security Advisory herausgegeben, welches auf eine Schwachstelle im RouterOS hinwies. Mikrotik ...

Windows 10

Microcode-Updates KB4090007, KB4091663, KB4091664, KB4091666 für Windows 10

Information von kgborn vor 1 TagWindows 101 Kommentar

Kurze Information für Administratoren von Windows 10-Systemen, die mit neueren Intel CPUs laufen. Microsoft hat zum 23. April 2018 ...

Heiß diskutierte Inhalte
Ausbildung
Wie gelingt ein guter Einstieg in die FiSi-Ausbildung? (Umschulung)
Frage von SiAnKoAusbildung29 Kommentare

Schönen guten Tag, ich bin SiAnKo und habe seit dem 1.04.2018 eine Umschulung als FiSi angefangen. Ich möchte natürlich ...

Windows Server
Alten DC entfernen
gelöst Frage von smartinoWindows Server27 Kommentare

Hallo zusammen, ich habe hier eine Umgebung übernommen und erstmal einen DCDIAG gemacht. Dabei fällt auf, daß eine ganze ...

Batch & Shell
Mit Powershell den Inhalt einer Excel mit einer Text Datei abgleichen
gelöst Frage von Bommi1961Batch & Shell21 Kommentare

Hallo zusammen, ich muss den Inhalt einer Excel Datei (Mappe1) mit dem Daten einer Text Datei abgleichen. Die Daten ...

Router & Routing
Subnetzmaske vergrößern
gelöst Frage von groovesurferRouter & Routing18 Kommentare

Hallo, hat jemand schonmal getestet was passiert, wenn man die Subnetzmaske bei laufendem Betrieb (wenn user im Netzwerk verbunden ...