Avatar billede jonasbc Nybegynder
31. juli 2002 - 11:22 Der er 14 kommentarer og
1 løsning

Erstatte tegn i en String...

Hej!

Hvordan fjerner/erstatter jeg let en række tegn (chars?) fra en String??
Der er tale om nogle lidt specielle "tegn" som "pling" ('), linjeskift osv.

- Jonas
Avatar billede bearhugx Nybegynder
31. juli 2002 - 11:26 #1
nemt nok

// udskifter ! med #
dinString.replace('!', '#');

/Søren Munk Skrøder
Avatar billede jonasbc Nybegynder
31. juli 2002 - 11:32 #2
Hmm... Det havde jeg også. Men følgende virker af én eller anden grund ikke:
String content = xmlElement.getContent();
content.replace('!','#');
content.trim();
name = content;
System.out.println("Name set to : " + name);
Avatar billede bearhugx Nybegynder
31. juli 2002 - 11:35 #3
kommer der fejl, eller sker der bare ikke noget ???
Avatar billede bearhugx Nybegynder
31. juli 2002 - 11:40 #4
følgende virker for mig
class StringReplaceCharTest {
    public static void main(String[] args) {
        String navn = new String("Søren Munk Skrøder");
        System.out.println(navn+" -> "+navn.replace('ø', '_'));
    }
}


mit output er
Søren Munk Skrøder -> S_ren Munk Skr_der
Avatar billede jonasbc Nybegynder
31. juli 2002 - 11:40 #5
Det skete ikke noget... men jeg har fundet ud af det...
Det er fordi replace() returnerer en ny string frem for at ændre i den gamle... man skal altså skrive:
dinString = dinString.replace('!', '#');
Avatar billede bearhugx Nybegynder
31. juli 2002 - 11:46 #6
Når ja!... Det har du jo ret i :-) -- Det var så også mig, som skrev koden i indlæg @ 31/07-2002 11:26:51, forkert.. Jeg skulle selvfølgelig sende retur-objektet til en string-instans :-/
Avatar billede bearhugx Nybegynder
31. juli 2002 - 11:48 #7
Hm... Vil du dermed inddirekte konkludere , at jeg ikke har haft nogen del i at løse problemet, siden at du tager alle points igen ????
Avatar billede jakoba Nybegynder
31. juli 2002 - 11:51 #8
første parameter til replace er faktisk en regular expression selvom mange imoplementationer af javascript tillader at man skriver en streng istedetfor.
derudover returnerer funktionen en ny streng. den ændrer ikke i den streng der søges i. så
    content.replace('!','#');
skrives mere korrekt som:
    content = content.replace( /!/g, '#' );

Du skal passes på med tegn der har en specialbetydning i regular expressions. '.' (punktum) står fx for 'ethvert tegn', så:
    content = content.replace( /./g, '#' );
vil give en streng af bare # tegn. det bør skrives
    content = content.replace( /\./g, '#' );
så punktummet læses som et bogstav og ikke som specialtegn
andre specialtegn der skal escapes på den måde er:
^ $ [ ] { } ( ) - + * \ / |
se: http://developer.netscape.com/docs/manuals/js/client/jsref/regexp.htm

hvis dinne specieller teng alle skal erstattes med det samme kan du skrive dem som er liste med [ og ] rundtom:
    content = content.replace( /[\."'!\?]/g, '#' );
// den udskifter alle forekomster af '.', '"', "'", '!' og '?' med '#'

mvh JakobA
Avatar billede bearhugx Nybegynder
31. juli 2002 - 11:54 #9
JacobA >> Det er Java-kategorien , ikke JavaScript :-))
Avatar billede jakoba Nybegynder
31. juli 2002 - 12:01 #10
Ups. sorry :(
Avatar billede jonasbc Nybegynder
31. juli 2002 - 12:37 #11
bearhugx...
Tjaa... det ved jeg da ikke rigtig. Jeg havde jo selv skrevet det, du foreslog. Men måske var jeg lidt for hurtig?

- Jonas
Avatar billede bearhugx Nybegynder
31. juli 2002 - 12:46 #12
En god praksis ved _alle_ spørgsmål her på eksperten er at beskive, hvad man allerede har forsøgt - det sparer os for en masse bøvl

det ville eksempelvis have været dejligt, hvis du allerede i spørgsmål-formuleringen havde skrevet f.eks.

"har allerde prøvet med String.replace(char,char), men har ikke kunne få den til at virke... Her er noget kode, som viser, hvordan jeg gør..."

så vi, som gerne vil besvare spørgsmålet kan forholde os til, at du allrede har forsøgt med String.replace(char,char), og derfor ikke føler os røvrendt kort sagt, når der er at spørgsmålsstiller tager alle points igen...

/Søren
Avatar billede bearhugx Nybegynder
31. juli 2002 - 12:49 #13
Ikke at jeg er vred/sur/gnaven ... men din fremgangmåde lignede meget den, som nogle uheldigt indvider herinde bruger :
- Der stilles et spørgsmål
- Der gives nogle svar
- Spørgeren siger, at det vidste han "da i forvejen" og tager alle points igen

Jeg har set for mange spørgsmål, som bruger den fremgangsmåde, og jeg er rent faktsik ved at blive lidt træt af dem...

/Søren
Avatar billede jonasbc Nybegynder
31. juli 2002 - 12:58 #14
ok... sorry. Jeg er stadig ny her på siden. Men tak for dine råd.

Kan jeg på nogen måde overføre point til dig "uden om" spørgsmålet?

- Jonas
Avatar billede bearhugx Nybegynder
31. juli 2002 - 13:01 #15
Du kan oprette et nyt spm "Points til bearhugx", hvori du klart og tydeligt refererer /linker til dette spørgsmål
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