Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: alle Sonderzeichen in String ignorieren

alle Sonderzeichen in String ignorieren
Frank
Guten Abend liebes Forum,
ich erstelle mir derzeit aus einer csv Datei, die ich in Excel importiert habe neue Verzeichnisse. Das heißt ich möchte mein Musikarchiv sortiren auf Grundlage der ID3 Tag Infos. Nur leider ist nicht immer der ID3 Tag sinnvoll und/oder beim Import 4 " - Zeichen vorhanden gewesen (so das Excel durcheinander kommt und falsch trennt), so dass es vorkommen kann, dass in dem neuen Pfad ein " oder andere Sonderzeichen vorkommen können. Wenn ich auf dieser Grundlage versuchen würde neue Verzeichnisse zu erstellen, würde dies zu einer Fehlermeldung führen. Nun meine Frage: Kann man in einem String, der ausgelesen wird, alle Sonderzeichen ignorieren?
Bsp:

D:\Musik\Interpret\D\Dominik Eulberg\ Brenzlich" Dachte"\

Wunsch:

D:\Musik\Interpret\D\Dominik Eulberg\Brenzlich Dachte\

Gruß, Frank
Anzeige
AW: alle Sonderzeichen in String ignorieren
23.09.2009 23:31:36
MichaV
Hallo,
Du kannst mit REPLACE ein Zeichen gegen kein Zeichen austauschen.
Option Explicit
Sub test()
Dim a As String
a = "D:\Musik\Interpret\D\Dominik Eulberg\ Brenzlich"" Dachte""\"
MsgBox a
a = Replace(a, """", "")
MsgBox a
End Sub
Alle Sonderzeichen wird schwer, was sind Sonderzeichen, was nicht?
Gruss- Micha
Anzeige
AW: alle Sonderzeichen in String ignorieren
23.09.2009 23:54:29
Frank
Ich denke da an alle Zeichen, die von Windows angegeben werden, wenn man einen neune Ordner erstellen möchte und Windows streikt...
Ich habe da so einige BUG's in den ID3 Tags, aber das würde zu lange dauern, um alle ordentlich zu beschriften. Dann könnte ich mir das Programm sparen. Bei den Fällen die mir bisher bekannt sind, geht es lediglich um den : "Doppelpunkt" der aus der Zeit stammt und dem " Anführungszeichen.
Gruß, Frank
Anzeige
AW: alle Sonderzeichen in String ignorieren
23.09.2009 23:56:10
Uduuh
Hallo,
vielleicht in der Art:
Sub ttt()
Dim sTmp As String, sText As String, i As Integer
sTmp = "D:\Musik\Interpret\D\Dominik Eulberg\ Brenzlich"" Dachte""\"
sText = Left(sTmp, 3)
For i = 4 To Len(sTmp)
Select Case UCase(Mid(sTmp, i, 1))
Case "A" To "Z", "\"
sText = sText & Mid(sTmp, i, 1)
End Select
Next
MsgBox sText
End Sub

Gruß aus’m Pott
Udo

Anzeige
AW: alle Sonderzeichen in String ignorieren
24.09.2009 00:15:09
Frank
Vieleicht nich ein kleines Beispiel der derzeitgen Ergebnisse:
Musik\Interpret\T\Tocotronic\DWKMNMV 12",3:45"\
Musik\Interpret\R\Royce Da 5'9",Runnin'"\3:06\
Musik\Interpret\J\James Horner\Mr. Murdoch""\
Ich wäre dankbar für jede Hilfe, dass stellt derzeit ein nicht lösbares Problem dar :-)
Gruß und Gute Nacht, Frank
Anzeige
Das ist doch kein Problem, wenn man auf...
24.09.2009 01:28:27
Luc:-?
...Udos Vorschlag aufsetzt und Zeichen für Zeichen vglt, Frank;
bspw so...

Dim a As String, ...
sText = Left(sTmp, 3)
For i = 4 To Len(sTmp)
a = Mid(sTmp, i, 1)
If a Like "[ 0-9A-Za-zÄäÖöÜüß]" Then sText = sText & a
Next i
...
Wenn du die anderen Zeichen nicht weglassen, sondern durch ein bestimmtes ersetzen willst, musst du If... noch mit ...Else... fortsetzen, zB Else sText = sText & " "... Wahrscheinlich wird in diesem Falle auch sText = sText & IIf(a Like "[ 0-9A-Za-zÄäÖöÜüß]", a, " ") fktn.
Außerdem könnte man das evtl beschleunigen, indem man so gleich mehrere Zeichen überprüft. _ Dabei müssen allerdings verbleibende Resttextlängen < hier 3 Zeichen berücksichtigt wdn...

For i = 4 To Len(sTmp) Step 3
a = Mid(sTmp, i, 3)
If a Like WorksheetFunction.Rept("[ 0-9A-Za-zÄäÖöÜüß]", Len(a)) Then sText = sText & a
Next i
Auch das kannst du ggf wie bereits geschildert mit ...Else... ergänzen...
Innerhalb der []-Klammern kannst du auch noch andere zulässige Zeichen notieren. Du kannst aber auch alles umkehren und hier nur die Zeichen notieren, die nicht übernommen wdn sollen. Dann lautet die Vglsmaske Like "[!"":,\...usw]" (vgl VBE-Hilfe →„Operator Like”).
Gruß Luc :-?
Anzeige
AW: alle Sonderzeichen in String ignorieren
24.09.2009 07:44:36
Frank
Guten morgen und vielen Dank an Udo's Grundgedanke bzw. deren Erweiterung durch Luc . Ich werde dann die Problematik heute Abend angehen und gemäß euren Ideen einbauen.
Vielen, vielen Dank. Das hat mir sehr geholfen.
Gruß und eine schönen Tag wünscht, Frank
AW: alle Sonderzeichen in String ignorieren
24.09.2009 09:01:49
Kawensmann
Hallo,
hast du dir mal das Programm mp3tag angesehen? Das ersetzt Zeichen in Tags (unterstützt auch Reguläre Ausdrücke), erstellt Verzeichnisse nach Tags und und und …
www.mp3tag.de
Gruß
Kawensmann
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Sonderzeichen in Strings ignorieren und bereinigen


Schritt-für-Schritt-Anleitung

Um alle Sonderzeichen in einem String zu ignorieren, kannst Du VBA verwenden. Hier ist eine einfache Anleitung, um dies zu erreichen:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul: Rechtsklick auf "VBAProject (DeineDatei)", wähle "Einfügen" und dann "Modul".
  3. Füge den folgenden Code ein:
Sub BereinigenString()
    Dim a As String
    a = "D:\Musik\Interpret\D\Dominik Eulberg\ Brenzlich"" Dachte""\"
    MsgBox "Ursprünglicher String: " & a
    a = Replace(a, """", "") ' Entfernt Anführungszeichen
    a = Replace(a, ":", "")  ' Entfernt Doppelpunkt
    MsgBox "Bereinigter String: " & a
End Sub
  1. Schließe den VBA-Editor und führe das Makro aus, um den String zu bereinigen.

Häufige Fehler und Lösungen

  • Problem: Der String wird nicht richtig bereinigt.
    Lösung: Stelle sicher, dass Du alle gewünschten Sonderzeichen mit der Replace-Funktion ersetzt hast. Füge weitere Replace-Zeilen für zusätzliche Zeichen hinzu.

  • Problem: Fehlermeldung beim Erstellen eines Verzeichnisses.
    Lösung: Überprüfe, ob alle Sonderzeichen entfernt wurden. Teste den bereinigten String, bevor Du versuchst, das Verzeichnis zu erstellen.


Alternative Methoden

Eine weitere Möglichkeit, alle Sonderzeichen in einem String zu ignorieren, besteht darin, eine Schleife zu verwenden, um jedes Zeichen zu überprüfen. Hier ein Beispiel:

Sub FilterSonderzeichen()
    Dim sTmp As String, sText As String, i As Integer
    sTmp = "D:\Musik\Interpret\D\Dominik Eulberg\ Brenzlich"" Dachte""\"
    sText = Left(sTmp, 3) ' Behalte den Anfang des Strings
    For i = 4 To Len(sTmp)
        If Mid(sTmp, i, 1) Like "[0-9A-Za-zÄäÖöÜüß \]" Then
            sText = sText & Mid(sTmp, i, 1)
        End If
    Next
    MsgBox sText
End Sub

Diese Methode bietet mehr Flexibilität, da Du gezielt festlegen kannst, welche Zeichen im String bleiben sollen.


Praktische Beispiele

Hier sind einige Beispiele zur Anwendung der oben genannten Methoden:

  1. Beispiel für eine Musikbibliothek:

    • Ursprünglicher String: D:\Musik\Interpret\T\Tocotronic\DWKMNMV 12",3:45"\
    • Bereinigter String: D:\Musik\Interpret\T\Tocotronic\DWKMNMV 12345\
  2. Beispiel für einen Dateipfad:

    • Ursprünglicher String: C:\Bilder\Urlaub\Sommer'2021\
    • Bereinigter String: C:\Bilder\Urlaub\Sommer2021\

Tipps für Profis

  • Verwende reguläre Ausdrücke, um komplexere Muster zu erkennen und zu ignorieren. So kannst Du eine effizientere Ignorierung von Zeichen erreichen.
  • Teste Deine Funktionen gründlich, bevor Du sie in wichtigen Projekten einsetzt. Eine falsche Ersetzung kann zu unerwarteten Ergebnissen führen.
  • Halte den Code modular, damit Du einfach neue Sonderzeichen zur Ignorierung hinzufügen kannst.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Zeichen gleichzeitig ersetzen?
Du kannst die Replace-Funktion mehrfach hintereinander verwenden oder eine benutzerdefinierte Funktion erstellen, die eine Liste von Zeichen erhält.

2. Funktioniert dies in Excel 2016?
Ja, der gezeigte VBA-Code funktioniert in Excel 2016 und neueren Versionen. Achte darauf, dass Makros in den Einstellungen aktiviert sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige