Sonderzeichen in Strings

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Takafusa.

    Sonderzeichen in Strings

    Hi,

    ich möchte einen File erstellen, der jede Menge Sonderzeichen enthält ... Aus gutem Grund zeige ich den Inhalt per Screenshot ... (s. Anlage)

    Es ist nämlich nicht so ganz einfach das Zeug in einen File zu bekommen ... zum Beispiel kann man ein "Gänsefüßchen" nicht so einfach in einen String einfügen, weil das mit der VB Syntax kollidiert.

    Auch andere Zeichen, wie etwa der "Doppelpunkt" scheinen irgendwelche Funktionen auszulösen ... obwohl ich nicht so recht verstehe, welche das sind.

    So habe ich versucht, diesen File zu befüllen:

    VB.NET-Quellcode

    1. Using sw As New StreamWriter(XSPFobject)
    2. Dim row = ""
    3. row = "<?xml version=" & """" & "1.0" & """" & " encoding=" & """" & "UTF-8" & """" & "?>"
    4. sw.WriteLine(row)
    5. row = "<playlist xmlns=" & """" & "http" & ":" & "//xspf.org/ns/0/" & """" &
    6. " xmlns:vlc=" & """" & "http" & ":" & "//www.videolan.org/vlc/playlist/ns/0/" & """" &
    7. " version=" & """" & "1" & """" & ">"
    8. row = " <title>Playlist</title>"
    9. sw.WriteLine(row)
    10. row = " <trackList>"
    11. sw.WriteLine(row)


    Aber egal was ich versuche, es kommt nicht das an, was ich mir erhoffe ...

    Ich vermute mal, dass Escape Sequenzen wie etwa "/0" eine Rolle spielen ... weil damit ein AsciiZ String terminiert wird ...

    Also ... wie kriege ich (mit möglichst wenig Aufwand) den File befüllt ... es sollte doch eine Möglichkeit geben einen String "as is" gebacken zu bekommen ... Oder etwa nicht ? :)

    LG
    Peter
    Bilder
    • s 2021-07-20 15-40-571.jpg

      14,81 kB, 1.112×73, 52 mal angesehen
    @Peter329 Ich habs mal etwas verkürzt und in einen StringBuilder geschrieben:

    VB.NET-Quellcode

    1. Imports System.Text
    2. Public Class Form1
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. Dim sw As New StringBuilder
    5. sw.AppendLine("<?xml version=""1.0"" encoding=""UTF-8""?>")
    6. sw.Append("<playlist xmlns=""http://xspf.org/ns/0/""")
    7. sw.Append(" xmlns:vlc=""http://www.videolan.org/vlc/playlist/ns/0/""")
    8. sw.AppendLine(" version=""1"">")
    9. sw.AppendLine(" <title>Playlist</title>")
    10. sw.AppendLine(" <trackList>")
    11. Me.RichTextBox1.AppendText(sw.ToString)
    12. End Sub
    13. End Class
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Warum nicht ein XmlDocument verwenden? So ein gefrickel macht doch keinen spaß.

    Edit @Peter329
    Gugge mal:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim xml As XmlDocument = New XmlDocument()
    2. xml.InsertBefore(xml.CreateXmlDeclaration("1.0", "UTF-8", Nothing), xml.DocumentElement)
    3. Dim playlistElement As XmlElement = xml.CreateElement("playlist")
    4. playlistElement.SetAttribute("xmlns", "http://xspf.org/ns/0/")
    5. playlistElement.SetAttribute("xmlns:vlc", "http://www.videolan.org/vlc/playlist/ns/0/")
    6. playlistElement.SetAttribute("version", "1")
    7. Dim titleElement As XmlElement = xml.CreateElement("title")
    8. titleElement.InnerText = "Playlist"
    9. Dim trackListElement As XmlElement = xml.CreateElement("trackList")
    10. playlistElement.AppendChild(titleElement)
    11. playlistElement.AppendChild(trackListElement)
    12. xml.AppendChild(playlistElement)
    13. Debug.WriteLine(xml.OuterXml)


    Das ist doch viel leserlicher und einfacher. Könnte man noch mit einem xmlwriter auch mit verschiedenen optionen ausgeben.

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „Takafusa“ ()

    Peter329 schrieb:

    Auch andere Zeichen, wie etwa der "Doppelpunkt" scheinen irgendwelche Funktionen auszulösen ..


    Das fällt mir jetzt erst auf.

    Peter329 schrieb:

    "http" & ":" & "//www.videolan.org/vlc/playlist/ns/0/"


    Es ist nicht der : sondern es wird das http:// sein, die Linie unten die VS anzeigt bedeutet so gesehen das gleiche wie im Webbrowser. Es ist ein Link, halte bei urls STRG gedrückt und klick dann mit der Maus drauf und siehe was passiert.