Lavender: Visual Basic - h usw. "umwandeln

Hallo zusammen,

ich habe folgende Frage:

wenn ich in einer Textbox diese html konformen zeichen habe (oder wie auch immer man sie nennt... Hexadezimal?)
html

und möchte daraus aber "wirklichen" Text machen, wie wandel ich die Zeichen um? (also html = "html")

Danke im Voraus.

Gruß
Lavender

  1. hi,

    und möchte daraus aber "wirklichen" Text machen, wie wandel ich die Zeichen um? (also html = "html")

    das ist hex-Code den jeder Browser versteht und Dir das in lesbaren Text umwandeln kann.

    Ergo: Die von Dir gesuchte Software heißt Firefox, Opera, IE ...

    --roro

    1. Moin,

      danke erstmal für deine Antwort, aber das ist es nicht, was ich brauche - ich muss besagten schnippsel eben im Programm schon umwandeln - von mir aus auch über eine temporäre html datei, aber diese muss eben wieder eingelesen werden. Wenn ich sie jedoch einlese, bekomme ich nur wieder diesen netten Hex(danke) Code.

      Gruß
      Lavender

      1. moin,

        falls Du PERL installiert hast, gehts mit einem Script, hier die Basics:

        use strict;

        das ist gegeben

        my $str = 'h';

        wir extrahieren daraus die hex-Zahl

        $str =~ /&#x(.*);/;
        my $hexzahl = $1; # steckt in der ersten Klammer

        aus hex mach dezimal

        my $ord = hex $hexzahl;

        nun, aus ord mach ASCII

        my $ascii = chr $ord;

        fertisch und ausgeben

        print "$ascii\n";

        es wird ein 'h' ausgegeben, stimmt ja auch!

        --roro

        1. Vielen Dank für deine Antwort, aber Perl ist leider nicht verfügbar und wäre auch etwas ungeschickt, wenn ich an die 20 solcher Zeichen wandeln müsste...

          Aber vielleicht weißt du ja, was ich mit "/" machen kann...

          also erstmal "&#x" und ";" weg, dann bleibt immernoch 2F und da hab ich schon Dec, Hex, CDec usw. versucht, aber er meckert immer an dem F... und da wären auch noch C, D usw.

          Viele Gruß
          Lavender

          1. Shalom!

            also erstmal "&#x" und ";" weg, dann bleibt immernoch 2F [...]

            Soweit schon gut. Dann setzt Du "&H" davor, damit er kapiert, daß es hexadezimal ist, und dann kannst Du's mit CInt in Integer umwandeln.

            Es gibt aber auch schon eine mitgelieferte Funktion, die diese Ersetzung vornimmt (zumindest in VB 2005, ältere Versionen weiß ich nicht): System.Web.HttpUtility.HtmlDecode(DeinString)

            Viele Grüße vom Længlich

        2. Hey,
          1991 hat angerufen, sie möchten gern ihre Perl4-Methodologie zurück.

            
          use HTML::Entities qw(decode_entities);  
          print decode_entities 'htm&#x6C';  
          
          

          Ausgabe:
          html

          --
          水-金-地-火-木-土-天-海-冥
          1. Moin,

            1991 hat angerufen, sie möchten gern ihre Perl4-Methodologie zurück.

            use HTML::Entities qw(decode_entities);
            print decode_entities 'htm&#x6C';

              
            Sowas Faules aber auch ;-)  
              
            Aber danke für den Tipp!  
              
            \--roro
            
      2. Hi,

        auch VB kennt Regular Expressions. (Muss man evt eine Projektreferenz dafür erzeugen, lange nicht mehr gemacht). Mit Regex kannst du den Zahlwert hinter &# und vor ; gut extrahieren und dann mit einer oder mehreren VB-integrierten Funktionen in ein Chr(..) verwandeln. Also du suchst den Text einfach nach dem Muster &#[0-9a-f]+; durch und ersetzt jedes Match mit dem konvertierten Chr(). Was besseres fällt mir auf die schnelle grad nicht ein.

        Ciao, Frank

        1. Vielen Dank für deine Antwort.

          Soweit so gut, aber was mache ich z.B. mit / ? - ok, ich extrahiere soweit die x2F oder sogar nur 2F, aber beide male meckert er beim Chr() ...

          Irgendwie müsste ich also auch noch das F umwandeln - aber zu was? oder noch besser wie?

          Viele Grüße
          Lavender

          1. Moin,

            Soweit so gut, aber was mache ich z.B. mit / ? - ok, ich extrahiere soweit die x2F oder sogar nur 2F

            hier kannst Du dann die Funktion einsetzen:

            Function Hex2Dez(ByVal strWert As String) As Long
            If UCase(Left(strWert, 2)) = "0X" Then
                Hex2Dez = Val("&H" & Mid(strWert, 3))
            ElseIf UCase(Left(strWert, 2)) <> "&H" Then
                Hex2Dez = Val("&H" & strWert)
            Else
                Hex2Dez = Val(strWert)
            End If
            End Function

            GGf. noch etwas anpassen und das Ergebnis mit Chr(…) weiterverarbeiten. Oder das Chr gleich in die Funktion rein, …

            Viele Grüße

            Jörg