Stringkonvert

Status
Nicht offen für weitere Antworten.

fomobrain

Mitglied
Hallo Leute,

da ich ein absoluter Newbie in Java bin, wollte ich mich mal erkundigen wie Pro's das anpacken würden.

Mein Chef möchte eine kleine Klasse die den String bzw. ne Textdatei mit reinem Plaintext in das HTML-Format bringt, d.h. eigentlich "nur" ä,ü,ö,ß mehrere Leerzeichen und Zeilenumbruch (also Enter).

Wie würtdet ihr das anpacken String, Array ...???

Wäre für einen kleinen Ansatz sehr dankbar... :roll:

Danke, Christian
 

fomobrain

Mitglied
Oh Man,
dass haut rein Java herrscht, ne eigene Klasse für das Thema.
Jetzt hab ich nur noch das Problem mit Leerzeichen und Zeilenumbrüchen.

Hast du auch nen Lösungvorschlag?

Danke für die äußerst schnelle Antwort
 

fomobrain

Mitglied
Nachtrag: Da ich wie geasgt ein absoluter Newb bin, weißn ich jetzt nich wie ich die Klasse runterladen bzw. anzeigen kann um das Benötigte zu klauen?
 

fomobrain

Mitglied
Hi hab jetzt folgende Lösungsansätze,

zum ersten habe ich ne Methode die zwar die gewünschten Sachen erledigt, aber ich hab keine Ahnung wie ich das ganze jetzt wieder zusammenführe...
Code:
 public static String htmltext (String input) {
        ue = input.replaceAll("ü","&"); 
        oe = input.replaceAll("ö","&");
        ae = input.replaceAll("ä","&");
        sz = input.replaceAll("ß","&");
        space = input.replaceAll(" ","&");
        String neu =ue+oe+ae+sz+space;
        return neu;
    }

und zum anderen über ne char-switch-Kombination
mein Problem dabei is erstens wie ich das ganze dann auf 4 Zeichen anwende, weil ich ja nurt eins auslese und zurück bzw in eine neuen String zurückspeichere:
Code:
for (int i=0;i<=text.length()-1;i++) {
           char z = text.charAt(i);
           
           switch (z) {
           case 'ä' : z='&' //was halt so nich fkt.    
                         break;
           case 'Ä' : z='Ä';
                         break;
           case 'ö' : z='ouml;'
                         break;
           //usw. ...
           }
Ich bin mir sicher das das für euche sicher etwas lächerlich ist, vielleicht gehe ich ja da auch ganz falsch ran, bin für alles offen..Danke im Voraus

Greetings
 

mikachu

Top Contributor
ansonsten ist der gedanke mit dem replaceAll() gar nicht mal so schlecht...

Code:
public static String htmltext (String input) {
        input = input.replaceAll("ü","&");
        input = input.replaceAll("ö","&");
        input = input.replaceAll("ä","&");
        input = input.replaceAll("Ü","Ü");
        input = input.replaceAll("Ö","Ö");
        input = input.replaceAll("Ä","Ä");
        input = input.replaceAll("ß","&");
        input = input.replaceAll(" ","&");

        return input;
    }

btw, warum hast du so viele strings benötigt ?
 

Murray

Top Contributor
mika hat gesagt.:
Code:
public static String htmltext (String input) {
        input = input.replaceAll("ü","&");
        input = input.replaceAll("ö","&");
        input = input.replaceAll("ä","&");
        input = input.replaceAll("Ü","Ü");
        input = input.replaceAll("Ö","Ö");
        input = input.replaceAll("Ä","Ä");
        input = input.replaceAll("ß","&");
        input = input.replaceAll(" ","&");

        return input;
    }

Wie schon in fomobrains Ansatz sind die zweiten Parameter so nicht besonders sinnvoll; wenn man wirklich HTML-Quoting machen will, dann sollte das wohl so aussehen:
Code:
public static String htmltext (String input) {
     input = input.replaceAll("ü","&uuml;"); //EDIT: ursprünglich standen hier die falschen Konstanten
     input = input.replaceAll("ö","&ouml;");
     input = input.replaceAll("ä","&auml;");
     input = input.replaceAll("Ü","&Uuml;");
     input = input.replaceAll("Ö","&Ouml;");
     input = input.replaceAll("Ä","&Auml;");
     input = input.replaceAll("ß","&szlig;");
     input = input.replaceAll(" ","");

     return input;
    }

Nachteilig an dieser Lösung ist, dass der Input-String jetzt achtmal nacheinander von vorn bis hinten durchsucht wird. Wenn man das vermeiden will, dann kann man auch selbst den String in einer Schleife durchgehen und die einzelnen Zeichen ( -> charAt) entweder 1:1 kopieren oder eben ersetzen (hat fomobrain in seinem zweiten Ansatz ja auch versucht).

Das könnte dann in etwa so aussehen:
Code:
StringBuilder sb = new StringBuilder; //StringBuffer für JDK < 1.5
for (int i=0; i<input.length; i++) {
   char c = input.charAt( i);
   switch ( c) {
       'ä ' : sb.append( "&amul;"); break;
       'ö' : sb.append( "&ouml;"); break;
           /* u.s.w. */
       ' ' : sb.append( ""); break;
    default: sb.append( c);
   }
}
String output = sb.toString();

/EDIT: Einrückungen
 

mikachu

Top Contributor
Murray hat gesagt.:
:oops: Sorry, typischer Copy & Paste-Fehler. Ich korrigiere das gleich mal...

???:L gut, du hast nen kommentar dazu gemacht... aber soll das alles sein ???

EDIT: ich kann doch auch nix dafür, dass die umlaute nicht in HTML-style angezeigt werden... :roll:
 

fomobrain

Mitglied
Oh Man Leute vielen Dank jetzt funzt erstmal alles soweit.
*dick grins mach*

Hatte mittlerweile auch schon nen StringBuilder benutzt, aber in meiner Methode, aber das es auch so funzt herrscht völlig.

So jetzt bin ich schon ein riesen Stück weiter, jetzt muss ich nur noch rausfinden wie ich Enter-Zeichen(Zeilenumbruch) aus nem Text lesen kann, aber wenn ich ein Dokument einles müsste ich das ja über zeilenweises Einlesen realisieren können.

Also noch mal vielen Dank Leute, echt en strakes Forum hier...
 

Murray

Top Contributor
mika hat gesagt.:
???:L gut, du hast nen kommentar dazu gemacht... aber soll das alles sein ???

EDIT: ich kann doch auch nix dafür, dass die umlaute nicht in HTML-style angezeigt werden... :roll:

War doch noch nicht fertig - ist gerade etwas Arbeit dazwischengekommen. :wink:

Aber das mit den Umlauten könnte man vielleicht wirklich verbessern: m.E. sollte man innerhalb der Code-Tags keine HTML-Quotes brauchen.
 

mikachu

Top Contributor
jo, genauso hab ich das im antwort-fenster auch geschrieben, aber wurde dann falsch dargestellt... wie hast du das hinbekommen, dass der die 2. parameter nicht interpretiert ?
 

fomobrain

Mitglied
bei mir wurde das auch flasch dargestellte, hatte auch die Tags ordentlich angegeben, acuh nachträgliches Editieren war da zwecklos
 

Murray

Top Contributor
mika hat gesagt.:
jo, genauso hab ich das im antwort-fenster auch geschrieben, aber wurde dann falsch dargestellt... wie hast du das hinbekommen, dass der die 2. parameter nicht interpretiert ?

Wenn ich als zweiten Parameter z.B. das HTML-Quoting für ä schreiben wollte, habe ich zuerst - wie Du und fornobrain wohl auch einfach die Zeichen '&', 'a', 'u', 'm', 'l' und ';" hintereinander als String-Konstante geschrieben, wie man das im Source auch tut - das führt dann leider zur verstümmelten Anzeigen. Damit es funktioniert, muss man das '&' auch quoten: in der String-Konstanten stehen dann die Zeichen & a m p ; a u m l ; (natürlich ohne die Leerzeichen). Allerdings darf man das dann nicht mehr editieren, ansonsten sind die Sonderzeichen wieder weg. :(
 

mikachu

Top Contributor
ich sehe den thread hier für beendet...

alle klarheiten sind beseitigt :D

Code:
this.finalize();
 

fomobrain

Mitglied
Code:
***QUE**** Garbage Collector errorer Exception, can't finalize

Habe nun mein Problem mit nachfolgendem Switch-Monster gelöst:
Da copy&paste bitte ich die falschen Zeilen zu entschuldigen bzw zu ignorieren aber ihr wisst ja was gewmeint is

Code:
public class txt2htmlconvert {

    public static void main(String[] args) {

        String title = "HTML Output";
        String begin= "<html><head><title>" + title + "</title></head><body>";
        String end ="</body></html>";

        String bsptext = "ÜÄÖ Besis \n  € %$§ pieltext \n öüäß ";

        String output=begin+htmltextswitch(bsptext)+end;
        System.out.println(output);
    }

    public static String htmltextswitch (String input) {
        StringBuilder sb = new StringBuilder();

        for (int i=0; i<input.length(); i++) {
            char c = input.charAt(i);
            switch (c) {
                //allg.
                case ' ': sb.append("&");   break;
                case '\n': sb.append("
");    break;
                case 'Ä': sb.append("Ä");   break;
                case 'ä': sb.append("&");   break;
                case 'Ö': sb.append("Ö");    break;
                case 'ö': sb.append("&");   break;
                case 'Ü': sb.append("Ü");   break;
                case 'ü': sb.append("&");   break;
                case 'ß': sb.append("&");  break;
                case '&' : sb.append("&");   break;     
                case '€' : sb.append("€");  break;
                case '?' : sb.append("");  break;
                case ',' : sb.append("‚");  break;
                case '„' : sb.append("„");  break;
                case '÷' : sb.append("&");break;
                case '‘' : sb.append("‘");  break;
                case '’' : sb.append("’");  break;
                case '“' : sb.append("“");  break;
                case '”' : sb.append("”");  break;
                case '–' : sb.append("–");  break;
                case '×' : sb.append("&"); break;
                
                //spezieller
                case '¹' : sb.append("¹");   break;
                case '²' : sb.append("²");   break;
                case '³' : sb.append("³");   break;
                case 'Ë' : sb.append("Ë");   break;
                case 'ë' : sb.append("&");   break;
                case 'ƒ' : sb.append("ƒ");   break;
                case '…': sb.append("…");   break;
                case '†' : sb.append("†");   break;
                case '‡' : sb.append("‡");   break;
                case 'ˆ' : sb.append("ˆ");   break;
                case '‰': sb.append("‰");   break;
                case 'Š' : sb.append("Š");   break;
                case '‹' : sb.append("‹");   break;
                case 'Œ' : sb.append("Œ");   break;
                case 'Ž' : sb.append("Ž");   break;
                case '•' : sb.append("•");   break;
                case '—' : sb.append("—");  break;
                case '˜' : sb.append("˜");   break;
                case '™' : sb.append("™");  break;
                case 'š' : sb.append("š");   break;
                case '›' : sb.append("›");   break;
                case 'œ' : sb.append("œ");   break;
                case 'ž' : sb.append("ž");   break;
                case 'Ÿ' : sb.append("Ÿ");   break;
                case '¡' : sb.append("&");  break;
                case '¢' : sb.append("&");   break;
                case '£' : sb.append("&");  break;
                case '¤' : sb.append("&");  break;
                case '¥' : sb.append("&");    break;
                case '¦' : sb.append("&"); break;
                case '§' : sb.append("&");   break;
                case '¨' : sb.append("&");    break;
                case '©' : sb.append("&");   break;
                case 'ª' : sb.append("&");   break;
                case '«' : sb.append("&");  break;
                case '¬' : sb.append("&");    break;
                case '®' : sb.append("&");    break;
                case '¯' : sb.append("&");   break;
                case '°' : sb.append("&");    break;
                case '±' : sb.append("&"); break;
                case '´' : sb.append("&");  break;
                case 'µ' : sb.append("&");  break;
                case '¶' : sb.append("&");   break;
                case '·' : sb.append("&"); break;
                case '¸' : sb.append("&");  break;
                case 'º' : sb.append("&");   break;
                case '»' : sb.append("&");  break;
                case '¼' : sb.append("¼"); break;
                case '½' : sb.append("½"); break;
                case '¾' : sb.append("¾"); break;
                case '¿' : sb.append("&"); break;
                case 'À' : sb.append("&Aagrave;");break;
                case 'Á' : sb.append("Á"); break;
                case 'Â' : sb.append("Â");  break;
                case 'Å' : sb.append("Å");  break;
                case 'Æ' : sb.append("Æ");  break;
                case 'Ç' : sb.append("Ç"); break;
                case 'ç' : sb.append("&"); break;
                case 'È' : sb.append("È"); break;
                case 'É' : sb.append("É"); break;
                case 'Ê' : sb.append("Ê");  break;
                case 'Ì' : sb.append("Ì"); break;
                case 'Í' : sb.append("Í"); break;
                case 'Î' : sb.append("Î");  break;
                case 'Ï' : sb.append("Ï");   break;
                case 'Ð' : sb.append("Ð");    break;
                case 'Ñ' : sb.append("Ñ"); break;
                case 'Ò' : sb.append("Ò"); break;
                case 'Ó' : sb.append("Ó"); break;
                case 'Ô' : sb.append("Ô");  break;
                case 'Õ' : sb.append("Õ"); break;
                case 'Ø' : sb.append("Ø"); break;
                case 'Ù' : sb.append("Ù"); break;
                case 'Ú' : sb.append("Ú"); break;
                case 'Û' : sb.append("Û");  break;
                case 'Ý' : sb.append("Ý"); break;
                case 'Þ' : sb.append("Þ");  break;
                case 'à' : sb.append("&"); break;
                case 'á' : sb.append("&"); break;
                case 'â' : sb.append("&");  break;
                case 'ã' : sb.append("&"); break;
                case 'å' : sb.append("&");  break;
                case 'æ' : sb.append("&");  break;
                case 'è' : sb.append("&"); break;
                case 'é' : sb.append("&");  break;
                case 'ì' : sb.append("&"); break;
                case 'í' : sb.append("&"); break;
                case 'î' : sb.append("&");  break;
                case 'ï' : sb.append("&");   break;
                case 'ð' : sb.append("&");    break;
                case 'ñ' : sb.append("&"); break;
                case 'ò' : sb.append("&"); break;
                case 'ó' : sb.append("&"); break;
                case 'ô' : sb.append("&");  break;
                case 'õ' : sb.append("&"); break;
                case 'ø' : sb.append("&"); break;
                case 'ù' : sb.append("&"); break;
                case 'ú' : sb.append("&"); break;
                case 'û' : sb.append("&");  break;
                case 'ý' : sb.append("&"); break;
                case 'þ' : sb.append("&");  break;
                case 'ÿ' : sb.append("&");   break;

                 //Zeichen ergänzen falls keine Konvertierung nötig
                default:   sb.append(c);
           }
       }
       return sb.toString();
    }
}

Nun würde ich gern von euch Pros erfahrn, wie man das ganze effizienter gestalten kann ohne de ganzen Zeichen durchzuaufen, die eh äußerst selten vorkommen.

Hatte auch schon ne replaceall-Scheife über den String gejagt die war aber noch langsamer...

Danke
 

Leroy42

Top Contributor
fomobrain hat gesagt.:
ohne de ganzen Zeichen durchzulaufen, die eh äußerst selten vorkommen.

Die ganzen Zeilen werden nicht durchlaufen, denn switch-Anweisungen werden vom Compiler
ziemlich raffiniert umgesetzt.

Ich gebe dir trotzdem recht, daß das eine Monsteranweisung ist.

Wie wärs denn damit, daß du dir selbst -- ist ja immerhin bald Ostern -- ein 65536er Array aus Strings gönnst,
daß du dann mit einem Direktzugriff über das aktuelle (unicode-)char ausliest?

Sonderfälle kannst du dann ja mit speziellen Markern besetzen.
 

fomobrain

Mitglied
@ mika danke das werdeoch versuchen umzusetzen

@leroy42 aber wenns en buchstabe is, müsste es doch die ganze schleife durchlaufen an default zu kommen

und zu deinem Array, erzähl mal ner Sau was vom Ottomotor, so ähnlich gehts mir nämlich gerade ;)

Außerdem hat's mein Chef mir so abgenommen, von daher Schall und Rauch , also vielen Dank Leute für die Anregungen

finalize();
 

Stiewen

Aktives Mitglied
Leute, ich hab jetzt nur den Post von Fomobrain gesehen mit dem letzten Source... LOL????????????

Ich hoffe jemand hat schon eine neue Lösung geschrieben, denn wenn du so programmierst, dann wirste bald den Überblick in deinen Progs verlieren, die dann schnell mal an die 1000 Zeilen rannkommen.

Hier mal eine Methode von mir, die alle Zeichen außer alle Buchstaben durch ein & im String Text ersetzt und zurück gibt ersetzt:

Code:
  public String replaceLetters ( String strText ) {
    String strSolution = "";
    while ( !strText.equals("") ) {
      if ( strText.charAt(0) >= 65 && strText.charAt(0) <= 90 ||
           strText.charAt(0) >= 97 && strText.charAt(0) <= 122 ) {
        strSolution += strText.charAt(0);
      } else {
        strSolution += "&";
      }
      strText = strText.substring(1);
    }
    return strSolution;
  }
 

fomobrain

Mitglied
hi stiewen ich weiß das der source ziemlich reinhaut, aber die HTML-Quotes sind ja einfach zu individuell, um wirklich jedes Zeichen zu ändern hab ich doch keine Wahl oder?
 

Murray

Top Contributor
Algorithmisch wie bei Stiewen ist da wohl nicht viel rauszuholen. Und auch, wenn man wie bei Leroys Ansatz eine Hilfsstruktur aufbaut, um die Abbildung nicht in einem riesigen switch-Statement zu machen, würde der Code, in dem diese Struktur aufgebaut wird, ähnlich aussehen: es muss ja für jedes Sonderzeichen ein individueller String definiert werden.
 

Murray

Top Contributor
Stiewen hat gesagt.:
dann könnt ihr ja eine HashMap machen...
Klar, aber egal ob HashMap oder Array: diese Struktur wird mit einem Code gefüllt, der dem switch-Statement ziemlich ähnlich sieht - zumindest wird es auch da für jedes Zeichen eine Zeile geben.

Was die Effizienz angeht: das müsste man wohl ausprobieren. Wie gut die Case-Variante funktioniert, hängt vom Compiler ab; der Array-Ansatz benötigt ziemlich viel Speicher, bietet dann aber durch den Index Zugriff optimale Performance; eine HashMap verbraucht weniger Speicher, ist aber beim Zugrif fnicht ganz so schnell wie das Array.
 

Stiewen

Aktives Mitglied
Murray hat gesagt.:
Klar, aber egal ob HashMap oder Array: diese Struktur wird mit einem Code gefüllt, der dem switch-Statement ziemlich ähnlich sieht - zumindest wird es auch da für jedes Zeichen eine Zeile geben.

du programmierst noch nicht so lange oder?
Wie wäre es mit einer Schleife? Schon mal was davon gehört? WICHTIG: import java.util.*;
Code:
import java.util.*;
  public HashMap getLetterHashMap (  ) {
    HashMap hmLetter = new HashMap();
    for ( int intCounter = 32; intCounter <= 255; intCounter++ ) {
      if ( intCounter == 32 ) hmLetter.put("" + (char)intCounter, "Z"); // für alle A immer Z nehmen [Beispiel]
      else if ( intCounter == 33 )                                      // nächsten Buchstaben bestimmen
                                                                        // weitere Buchstaben abfangen... einfach immer zuschreiben
      else hmLetter.put("" + (char)intCounter, "" + (char)intCounter);
    }
    return hmLetter;
  }

Ich denke mal, da werden ne Menge Zeilen wegbleiben ...

nu kannst du in deinem Prog die HashMap erstellen lassen ...
Code:
HashMap Mein_HTML_Alphabet = getLetterHashMap();

Hoffe wird ein wenig kürzer als 150 Zeilen ;-)

Stiewen
 

Murray

Top Contributor
Stiewen hat gesagt.:
du programmierst noch nicht so lange oder?
ROTFL

Stimmt, heute erst seit 9:00 Uhr..

Ansonsten doch schon ein paar Jährchen, u.a. seit 1997 professionell in Java :cool:

Stiewen hat gesagt.:
Code:
import java.util.*;
  public static HashMap getLetterHashMap (  ) {
    HashMap hmLetter = new HashMap();
    for ( int intCounter = 32; intCounter <= 255; intCounter++ ) {
      if ( intCounter == 32 ) hmLetter.put("" + (char)intCounter, "Z"); // für alle A immer Z nehmen [Beispiel]
      else if ( intCounter == 33 )                                      // nächsten Buchstaben bestimmen
                                                                        // weitere Buchstaben abfangen... einfach immer zuschreiben



                                          /* genau das "einfach weiter zuschreiben" ist der Punkt; was glaubst Du, wieviele 
                                             Zeilen das werden, wenn hier jeder Einzelfall behandelt werden soll? Nach meiner 
                                             Rechnung ziemlich genau soviele, wie es Einzelfälle gibt. Und wieviele 
                                             case-Anweisungen hatte das switch-statement nochmal? Das dürfte also
                                             zielmlich gelich sein.... */


      else hmLetter.put("" + (char)intCounter, "" + (char)intCounter);
    }
    return hmLetter;
  }
 

Stiewen

Aktives Mitglied
Code:
                case 'Ä': sb.append("Ä");   break;
                case 'Ö': sb.append("Ö");    break; 
                case 'Ü': sb.append("Ü");   break; 
                case '&' : sb.append("&");   break;     
                case '€' : sb.append("€");  break;
                case '?' : sb.append("�");  break;
                case ',' : sb.append("‚");  break;
                case '„' : sb.append("„");  break; 
                case '‘' : sb.append("‘");  break;
                case '’' : sb.append("’");  break;
                case '“' : sb.append("“");  break;
                case '”' : sb.append("”");  break;
                case '–' : sb.append("–");  break; 
                case '¹' : sb.append("¹");   break;
                case '²' : sb.append("²");   break;
                case '³' : sb.append("³");   break;
                case 'Ë' : sb.append("Ë");   break; 
                case 'ƒ' : sb.append("ƒ");   break;
                case '…': sb.append("…");   break;
                case '†' : sb.append("†");   break;
                case '‡' : sb.append("‡");   break;
                case 'ˆ' : sb.append("ˆ");   break;
                case '‰': sb.append("‰");   break;
                case 'Š' : sb.append("Š");   break;
                case '‹' : sb.append("‹");   break;
                case 'Œ' : sb.append("Œ");   break; 
                case 'Ž' : sb.append("Ž");   break;
                case '•' : sb.append("•");   break;
                case '—' : sb.append("—");  break;
                case '˜' : sb.append("˜");   break;
                case '™' : sb.append("™");  break;
                case 'š' : sb.append("š");   break;
                case '›' : sb.append("›");   break;
                case 'œ' : sb.append("œ");   break; 
                case 'ž' : sb.append("ž");   break;
                case 'Ÿ' : sb.append("Ÿ");   break; 
                case '¼' : sb.append("¼"); break;
                case '½' : sb.append("½"); break;
                case '¾' : sb.append("¾"); break; 
                case 'Á' : sb.append("Á"); break;
                case 'Â' : sb.append("Â");  break;
                case 'Å' : sb.append("Å");  break;
                case 'Æ' : sb.append("Æ");  break;
                case 'Ç' : sb.append("Ç"); break;
                case 'ç' : sb.append("&"); break;
                case 'È' : sb.append("È"); break;
                case 'É' : sb.append("É"); break;
                case 'Ê' : sb.append("Ê");  break; 
                case 'Ì' : sb.append("Ì"); break;
                case 'Í' : sb.append("Í"); break;
                case 'Î' : sb.append("Î");  break;
                case 'Ï' : sb.append("Ï");   break;
                case 'Ð' : sb.append("Ð");    break;
                case 'Ñ' : sb.append("Ñ"); break;
                case 'Ò' : sb.append("Ò"); break;
                case 'Ó' : sb.append("Ó"); break;
                case 'Ô' : sb.append("Ô");  break;
                case 'Õ' : sb.append("Õ"); break;
                case 'Ø' : sb.append("Ø"); break;
                case 'Ù' : sb.append("Ù"); break;
                case 'Ú' : sb.append("Ú"); break;
                case 'Û' : sb.append("Û");  break;
                case 'Ý' : sb.append("Ý"); break;
                case 'Þ' : sb.append("Þ");  break;
Juhuuu, > 60 Zeilen, die man durch 3 ersetzen kann... Prima!

Nach meiner Rechnung ziemlich genau soviele, wie es Einzelfälle gibt.

Dann würde ich sagen übe mal noch ein wenig... denn ich hab gehört, dass es sowas, wie "Kleiner-" und "Größerzeichen" geben soll. Mit denen kann man einen ganzen Bereich von Einzellzeichen abdecken. Wegen Doppelzeichen kann man gucken, ob eines der Einzellzeichen mit "\" beginnt und geht guckt dann das nächste Zeichen an.

So, alles in allem würde ich sagen is das ganze Prog ansich schon totaler Schwachsinn... gibt es bestimmt schon irgendwo im Net ... wenn nicht, dann kann ja mal der Author dieses Threads den Murray fragen, ob er ihm so ein Prog/ Algorithmus schreibt, denn der macht das ja schon seit 1997 professionell!

C ya, euer erst seit 3 Jahren progender Stiewen
 
R

Roar

Gast
lol du hugo.
1. is der switch case code so wie er gepostet ist nicht korrekt, da das forum wieder die html sonderzeichen in die richtigen zeichen umgewandelt hat.
2. gibts für sowas keinen "algorithmus". das geht nicht anders als mit ner key-value tabelle.
3. stell dir vor, sowas gibts schon im net. ein link wurde in der ersten antwort gepostet...
4. ""C ya, euer erst seit 3 Jahren progender Stiewen"" wie, 3 jahre aber kein plan von html ???:L ^^ :lol: :bae:
 

Murray

Top Contributor
Stiewen hat gesagt.:
Juhuuu, > 60 Zeilen, die man durch 3 ersetzen kann... Prima!
Die drei Zeilen möchte ich denn doch mal sehen... Du hast schon mitbekommen, dass die Darstellung des Quelltextes trotz der Code-Tags hier nicht hundertprozentig stimmt? Obwohl es so aussieht, gibt es weder a) mehrere gleiche Case-Labels (das wäre auch nicht erlaubt) noch b) mehrere gleiche Ausdrücke auf der rechten Seite. Daher gibt es da auch nicht viele Bereiche, die man zusammenfassen könnte.

So, alles in allem würde ich sagen is das ganze Prog ansich schon totaler Schwachsinn... gibt es bestimmt schon irgendwo im Net
Ok, der Thread ist mittlerweile ziemlich lang, aber wenn Du Dir trotzdem die Mühe machen könntest von vorn anzufangen, dann sieh Dir doch mal gleich die erste Antwort an. Aber es ist nunmal so, dass man nicht immer fremde Software einsetzen kann/darf.

... wenn nicht, dann kann ja mal der Author dieses Threads den Murray fragen, ob er ihm so ein Prog/ Algorithmus schreibt, denn der macht das ja schon seit 1997 professionell!
Da der Autor aber lesen kann, braucht er das nicht mehr.
 

Stiewen

Aktives Mitglied
1.
Roar hat gesagt.:
2. gibts für sowas keinen "algorithmus". das geht nicht anders als mit ner key-value tabelle.
Also:
Roar hat gesagt.:
... ich meinte den Algorithmus, der eine solche Tabelle erstellt
2.
Roar hat gesagt.:
4. ""C ya, euer erst seit 3 Jahren progender Stiewen"" wie, 3 jahre aber kein plan von html ???:L ^^ :lol: :bae:
Ich will keinen beleidigen, aber manche haben selbst als VIP einer Site den Unterschied zwischen coden und progn bemerkt.

3.
...nicht mit solchem Frickelkram wie HTML ab...
is schon wichtig HTML ...

4.
Murray hat gesagt.:
Die drei Zeilen möchte ich denn doch mal sehen...
Hast aber schon gesehen, dass ich mich dabei auf den Source stütze, der da steht ne? Also dann:
Code:
for ( int c = 32; c < 255; c++ ) {s.append(""+(char)c)}
Oh, ist sogar nur eine geworden ... irgendwo is da schon die Buchstabenfolge mit dabei :-D

5.
Murray hat gesagt.:
dann sieh Dir doch mal gleich die erste Antwort an
Murray hat gesagt.:
Da der Autor aber lesen kann, braucht er das nicht mehr.
Hatte nicht das hier gesagt?
Stiewen hat gesagt.:
Leute, ich hab jetzt nur den Post von Fomobrain gesehen mit dem letzten Source...

Hoffentlich kann der Author besser lesen als andere hier...
 
R

Roar

Gast
alter ne...

... ich meinte den Algorithmus, der eine solche Tabelle erstellt
viel spaß jung. so ein algorithmus ist ungefähr genauso unmöglich zu implementieren, wie einer, der dir eine tabelle mit deutschen wörtern und ihren englischen üebrsetzungen dazu erstellt. ein algorithmus berechnet etwas. heir gibts nix zu berechnen. dein code ist so sinnlos wie das switch-case konstrukt, wie es hier im forum erscheint, aber da du aufmerksam gelesen hast weißt du ja, warum das so ist...
 

Leroy42

Top Contributor
Rundumschlag hat gesagt.:
is schon wichtig HTML ...
Stimmt!

Kaminfegen(*) ist auch wichtig.
Aber ich muß ja nicht, nicht unbedingt, ...

(*) Nichts gegen Kaminfeger und HTML-Coder. Es ist nur so, daß ich nicht schwindelfrei bin.
 

Murray

Top Contributor
Stiewen hat gesagt.:
Code:
for ( int c = 32; c < 255; c++ ) {s.append(""+(char)c)}
Schön - danach hat man also einen String der die Zeichen mit den ASCII-Codes von 32 bis 255 enthält. Aber wie trägt der zur Problemlösung bei?
 

Leroy42

Top Contributor
Roar hat gesagt.:
so ein algorithmus ist ungefähr genauso unmöglich zu implementieren...
Unsinn! Ist doch ganz einfach! Hier mal als als Pseudo-Code:
Code:
while (kombiGenerator.gibtNochZeichenkombination()) {
    ZK zk1 = kombiGenerator.next();
    ZK zk2 = frageHarz4erVormMonitorNachTransformation(zk1);
    neuerTabelleneintrag(zk1, zk2)
}

Mußt halt 'ne kleine Verlagerung des Aufwands in Kauf nehmen.
 
G

Gott

Gast
[schild=10 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]Ich bin kein Agnostiker![/schild]
 

byte

Top Contributor
Könnt ihr diesen Kleinkrieg irgendwo anders fortführen? Ist ja wie im Sandkasten hier...
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben