Avatar billede baitianlong Nybegynder
16. december 2002 - 19:06 Der er 21 kommentarer og
1 løsning

Fortsættelse af " og charAt

Jeg er ved at lave en opgave som skal lave et " i en string om til " Jeg gør det med et array.... Det birker dog langtfra. Her er min kode:

    public String toHTMLString(String in) {
      String[] tegn[] = new String[in.length()];
      for(int i=0; i < in.length(); i++){
     
          tegn[i] = in.charAt(i) != '"' ? in.chatAt(i) : "&#34";
      }

      String resultat = "";

    for(int j = 0; j < tegn.length; j++) {
        resultat.concat(tegn[j]);
    }
    return resultat;
    }

Hvad gør jeg for at få det til at virke ??
Avatar billede bearhugx Nybegynder
16. december 2002 - 19:10 #1
{
  StringBuffer buf = new StringBuffer();
  for( int i=0;i<in.length();++i) {
  if (in.charAt(i) = '"') {
    buf.append("&#34")
  } else {
    buf.append(""+in.chatAt(i));
  }
  return buf.toString()
}
}
Avatar billede bearhugx Nybegynder
16. december 2002 - 19:12 #2
Ups .. manglede lige at få metode-headeren med

public String toHTMLString(String in) {
  StringBuffer buf = new StringBuffer();

  for( int i=0;i<in.length();++i) {
    if (in.charAt(i) = '"') {
      buf.append("&#34")
    } else {
      buf.append(""+in.chatAt(i));
    }
  }
  return buf.toString()
}
Avatar billede bearhugx Nybegynder
16. december 2002 - 19:14 #3
Og så et semikolon efter

buf.append("&#34");
Avatar billede arne_v Ekspert
16. december 2002 - 19:41 #4
Hvorfor ikke:

public String toHTMLString(String in) {
  StringBuffer buf = new StringBuffer();
  for( int i=0;i<in.length();i++) {  // <---- i++ i.s.f. ++i
    if (in.charAt(i) = '"') {
      buf.append("&#34")
    } else {
      buf.append(in.charAt(i));  // <---- typo fixet og overflødig streng fjernet
    }
  }
  return buf.toString()
}
?
Avatar billede bearhugx Nybegynder
16. december 2002 - 19:43 #5
hvorfor i++ i stedet for ++i --- hvad er der galt med en pre-eval i stedet for en post-eval ... Det vil jo aligevel give det samme resultat...

Tak for typo-ret, by the way :-)
Avatar billede bearhugx Nybegynder
16. december 2002 - 19:45 #6
sorry -- det er ikke eval .. men i denne struktur (for-løkke vil det da give samme resultat)
Avatar billede arne_v Ekspert
16. december 2002 - 19:46 #7
Der er vel ikek noget galt med ++i, men det er
"normalt" med i++.
Avatar billede bearhugx Nybegynder
16. december 2002 - 19:48 #8
he he -- jeg har kodet med ++i lige siden jeg blev fortalt af min C++-lærer at det gav en mere optimeret kode ifm. for-løkker...
Avatar billede baitianlong Nybegynder
16. december 2002 - 19:49 #9
Tak for jeres smukke foreslag. Vi har dog fået den løst på denne subtile måde:

public String toHTMLString(String in) {
    String tegn[] = new String[in.length()];
    for (int i = 0; i < in.length(); i++) {
        int tal = in.indexOf("\"", i);
        int tal2 = in.indexOf("<", i);
        if (i == tal) {
            tegn[i] = ("&#34;");
        } else if (i == tal2) {
                tegn[i] = ("&lt;");
        } else
                tegn[i] = "" + in.charAt(i);
    }

    String resultat = "";

    for (int j = 0; j < tegn.length; j++) {
        resultat += tegn[j];
    }
    return resultat;
}

Den er sgu smuk, hva' ?

Men tak for infoen om StringBuffer. Det er jo en smart ting (o; Arne>> Smid et svar, så kan i dele pointsne...........
Avatar billede bearhugx Nybegynder
16. december 2002 - 19:49 #10
Under alle omstændigheder kom jeg først denne gang ;-) .... *smiler*
Avatar billede arne_v Ekspert
16. december 2002 - 19:50 #11
berhugx> Det var muligvis sandt med visse C++ compilere for
mange mange år siden. Men idag bør man lade compilerne om at stå
for den slags optimeringer.
Avatar billede arne_v Ekspert
16. december 2002 - 19:51 #12
legende.dk> Nej - jeg synes du skal give bearhugx alle pointene,
da jeg ikke rigtigt har bidraget med noget.
Avatar billede bearhugx Nybegynder
16. december 2002 - 19:51 #13
arne > Ok...

legende.dk ... Ikke for at sige noget ,,,, men hold da kæft, hvor er den kode obskur!
Avatar billede baitianlong Nybegynder
16. december 2002 - 19:53 #14
Den er sindsyg. Jeg er ved at dø af grin over den. Men for en nystartet Datamatiker er den cool (o; Her er pointsne...

Mvh
Avatar billede arne_v Ekspert
16. december 2002 - 19:56 #15
Iøvrigt tror jeg at I i virkeligheden vil:

public String toHTMLString(String in) {
  StringBuffer buf = new StringBuffer("");
  for( int i=0;i<in.length();i++) {
    char c = in.charAt(i);
    switch(c) {
      case '"':
          buf.append("&#34;")
          break;
      case '<':
          buf.append("&lt;");
          break;
      case '>':
          buf.append("&gt;");
          break;
      default:
          buf.append(c);
          break;
    }
  }
  return buf.toString()
}
Avatar billede bearhugx Nybegynder
16. december 2002 - 19:57 #16
Hmmm arne ... multi-purpose :-)
Avatar billede arne_v Ekspert
16. december 2002 - 19:59 #17
Hvis "<" er et problem, så tror jeg også at ">" er det !
Avatar billede baitianlong Nybegynder
16. december 2002 - 20:00 #18
arne er smuk
Avatar billede arne_v Ekspert
16. december 2002 - 20:00 #19
Og hvis man skal teste for mere end 2 værdier, så må switch være
det rigtige.
Avatar billede arne_v Ekspert
16. december 2002 - 20:02 #20
legende.dk> næppe

Jeg formoder, at I er igang med at generere noget XML.

I kunne ikke bruge et af de mange XML libraries til det ?
Avatar billede baitianlong Nybegynder
16. december 2002 - 20:04 #21
Det var bare en enkelt lille metode, som skulle udskifte nogle tegn til html kode. Andet var der ikke i det. Men den var da lærerig.....
Avatar billede bearhugx Nybegynder
16. december 2002 - 20:06 #22
takker for points ... har dog været travt beskæftiget med at formulere et andet spm
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester