Avatar billede mikmakmuk Nybegynder
15. august 2007 - 10:33 Der er 11 kommentarer og
1 løsning

Fjern det sidste mellemrum i en streng

Hvordan laver jeg er replace som replacer det sidste mellemrum i en streng?
Avatar billede fsconsult.dk Nybegynder
15. august 2007 - 10:48 #1
er det ikke bare at bruge .trim() metoden, som fjerner efterstillede blanke?
Avatar billede mikmakmuk Nybegynder
15. august 2007 - 10:59 #2
det handler om at jeg skal genererer noget xml
<tagnavn minattribut="bla bla bla">

Jeg får så en fejl på at det sidste blanktegn ikke er tilladt.
Avatar billede mikmakmuk Nybegynder
15. august 2007 - 11:00 #3
så jeg kan vel ikke bruge trim
Avatar billede kalp Novice
15. august 2007 - 11:06 #4
public static String trimRight(String string) {
    char[] c = string.toCharArray();
    int length = c.length;
    while (c[length - 1] <= ' ') {
        length--;
    }
    return string.substring(0, length);
}
Avatar billede fsconsult.dk Nybegynder
15. august 2007 - 11:11 #5
nej, du kan kun bruge trim hvis det er ok at alle efterstillede blanke bliver fjernet.

iøvrigt laver kalp's kode da vist det samme som trim()

hvis det KUN er et sidste evt. mellemrum som skal fjernes, hvad så med

if (tekst.size()>0 && tekst.charAt(tekst.size()-1)==' ') {
tekst = tekst.substring(0,tekst.size()-1);
}
Avatar billede kalp Novice
15. august 2007 - 11:55 #6
har ikke tjekket syntax.. men sådan her istedet.


String test = " Hej med dig  ";
while(test.endsWith(" "))
{
  test = test.substring(0,test.length() -1);
}
Avatar billede fsconsult.dk Nybegynder
15. august 2007 - 12:21 #7
kalp:  giver det ikke stadig det samme som trim() ?    men havde glemt endsWith

Flg. ville modsat trim kun fjerne et evt SIDSTE mellemrum :

if(test.endsWith(" "))
{
  test = test.substring(0,test.length() -1);
}
Avatar billede kalp Novice
15. august 2007 - 12:55 #8
fsconsult.dk >>

din kode fjerner kun det sidste mellemrum hvis det findes.. men ikke hvis der findes flere.

min kode (hvis den får lov til at køre uden compiller brokker sig)
så vil den fjerner alle mellemrum fra højre.. og kun fra højre.
Avatar billede fsconsult.dk Nybegynder
15. august 2007 - 13:08 #9
kalp:  korrekt, og opgaven lød "Hvordan laver jeg er replace som replacer det sidste mellemrum i en streng?" ...  tekst.trim() vil også fjerne samtlige efterstillede mellemrum, ikke ?
Avatar billede kalp Novice
15. august 2007 - 13:40 #10
Du har ret i, at spørgsmålet er defineret som at man skal fjerne det sidste mellemrum.. men kan ikke se pointen i det hvis der nu skulle være flere mellemrum til sidst:) men kan jo være spørger er sikker på der kun kan være et for meget.

angående trim() så fjerner den mellemrum både fra højre OG venstre!!
min kode fjerner kun alle mellemrum fra højre!!

trim() = fjern mellemrum både fra højre og venstre
min = fjern alle mellemrum fra højre kun
Avatar billede nielle Nybegynder
15. august 2007 - 14:28 #11
Denne fjerner det sidste mellemrum i en strenmg, også selvom denne ikke nødvendigvis står i enden:

String tekst = "<tagnavn minattribut=\"bla bla bla\">";
System.out.println(tekst);
       
tekst = tekst.replaceAll(" ([^ ]*)$", "$1");
System.out.println(tekst);


Denne fjerner den sidste blok af mellemrum:

String tekst = "<tagnavn minattribut=\"bla bla    bla\">";
System.out.println(tekst);
       
tekst = tekst.replaceAll(" +([^ ]*)$", "$1");
System.out.println(tekst);
Avatar billede mikmakmuk Nybegynder
22. august 2007 - 06:53 #12
Tak for hjælpen :-)
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