Avatar billede brianb Nybegynder
27. august 2008 - 01:00 Der er 6 kommentarer og
1 løsning

Ombytning af bogstaver i en string

Hejsa,

Jeg ønsker at bytte bogstaver i en streng således hvis jeg fx. skriver

String a = "Bairn";

Så kan jeg smide a to pladser frem og r to tilbage, eller jeg ønsker sådan set bare at kunne smide bogstaver frem og tilbage, hvordan gøres dette lettest, med en liste formoder jeg, men hvordan?
Avatar billede arne_v Ekspert
27. august 2008 - 01:29 #1
Det nemmeste er nok bare et char array.
Avatar billede arne_v Ekspert
27. august 2008 - 01:31 #2
Eksempel:

public class StringFun {
    public static void main(String[] args) {
        String s = "Bairn";
        char[] c = s.toCharArray();
        char tmp = c[1];
        c[1] = c[3];
        c[3] = tmp;
        String s2 = new String(c);
        System.out.println(s2);
    }

}
Avatar billede md_craig Nybegynder
27. august 2008 - 10:48 #3
Hvis der skal laves en længere række operationer af denne slags var det nok værd at bruge StringBuffer istedet.

og så bruge metoderne charAt og setCharAt

http://java.sun.com/j2se/1.4.2/docs/api/java/lang/StringBuffer.html
Avatar billede brianb Nybegynder
27. august 2008 - 18:50 #4
Tak til jer begge, smid et svar ;)
Avatar billede arne_v Ekspert
27. august 2008 - 19:54 #5
StringBuilder vil kun vaere hurtigere hvis man har en StringBuilder og skal bruge en
StringBuilder.

String->char[]->String er hurtigere end String->StringBuilder->String.
Avatar billede arne_v Ekspert
27. august 2008 - 19:59 #6
og et svar fra mig
Avatar billede md_craig Nybegynder
27. august 2008 - 23:46 #7
Tror du misforstod det jeg mente...

Hvis der skal laves en hules masse ombytnigner... (der står intet sted det kun er en)...

Self er String -> char[] (ombyt 2) -> String hurtigere.

Men String -> char[] (ombyt 2) -> String -> char[] (ombyt 2) -> String osv... var pointen... det er klart man kan self String -> char[] (ombyt 2)(ombyt 2) -> String... dette kan dog lede til en led grim metode, hvorimod en metode der ombytter 2 chars er rimelig "pæn"...

So...

public StringBuffer switchChars(StringBuffer sb, int x, int y);

Jeg er klar over at man ofc. kan smide et char[] ind istedet... (Men ville jeg kun gøre hvis det var intærn kode så.)...
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

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