Avatar billede gremlins Nybegynder
04. april 2003 - 12:13 Der er 9 kommentarer og
2 løsninger

Fjern linieskift fra String

Jeg har en GUI med et tekstfelt. Hvis folk trykker enter i feltet får jeg en fejl, da mit program ikke tager højde for dette.
Hvordan får jeg fjernet alle linieskift fra min String?
Avatar billede arne_v Ekspert
04. april 2003 - 12:15 #1
Hvis du bruger JDK/SDL 1.4.x, så kan du bare:

String s;

s.replaceAll("\n", "");
Avatar billede arne_v Ekspert
04. april 2003 - 12:15 #2
JDK/SDK 1.4.x = J2SE 1.4
Avatar billede arne_v Ekspert
04. april 2003 - 12:18 #3
Hvis en ældre JDK/SDK så noget i retning af:

private String strip(String s) {
    StringBuffer sb = new StringBuffer("");
    for(int i = 0; i < s.length(); i++) {
        if(s.charAt(i) != '\n') {
          sb.append(s.charAt(i));
        }
    }
    return sb.toString();
}
Avatar billede r9 Nybegynder
04. april 2003 - 13:17 #4
Prøv:

public String removeLineFeed(String s) {
  StringTokenizer st = new StringTokenizer(s,"\n",false);
  String t="";
  while (st.hasMoreElements()) t += st.nextElement();
  return t;
  }

er ikke testet..
Avatar billede =maddog= Nybegynder
04. april 2003 - 13:44 #5
linje-skift kan da cist også være \r.
I så fald

private String strip(String s) {
    StringBuffer sb = new StringBuffer(s.length());
    char[] sar = s.toCharArray();
    for(int i = 0; i < sar.length; i++) {
        switch (sar[i]) {
          case('\n'):
          case('\r'):
          break;
          default:
          sb.append(sar[i]);
        }
    }
    return sb.toString();
}
eller noget ligende.
Avatar billede =maddog= Nybegynder
04. april 2003 - 13:46 #6
der mangler i hvert fald en break
Avatar billede =maddog= Nybegynder
04. april 2003 - 13:53 #7
Den rekursive udgave
    private String removeCR(String in) {
        int i = (in.indexOf("\n")>in.indexOf("\r"))?in.indexOf("\n"):in.indexOf("\r");
        if (i!=-1) return removeCR(in.substring(0,i)+in.substring(1+i,in.length()));
        else return in;
    }
Avatar billede gremlins Nybegynder
04. april 2003 - 13:58 #8
arne_v: din løsning virker, der skal bare tilføjes et "&& s.charAt(i) != '\r'" som =maddog= foreslog.
Derfor deler jeg pointene mellem jer. Håber det er ok!
Avatar billede =maddog= Nybegynder
04. april 2003 - 14:00 #9
helt ok med mig. den rekursive virker også skal jeg hilse at sige.
Avatar billede gremlins Nybegynder
04. april 2003 - 14:01 #10
=maddog=: kan du ikke svare så jeg ka gi dig point
Avatar billede =maddog= Nybegynder
04. april 2003 - 14:02 #11
:D
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