Avatar billede funkyloonie Nybegynder
30. december 2004 - 15:19 Der er 21 kommentarer og
1 løsning

Backslash fjernes

Hej.

name.replaceAll("\\", "_");

Denne streng giver mig en fejl.
java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\

Jeg har indsat et backslash for at escape tegnet efterfølgende. Jeg får dog en fejl på det. Hvordan løser jeg det?
Avatar billede funkyloonie Nybegynder
30. december 2004 - 15:23 #1
Den fejler faktisk også på
name.replaceAll("*", "_");
Avatar billede erikjacobsen Ekspert
30. december 2004 - 15:32 #2
name.replaceAll("\\\\", "_");
Avatar billede funkyloonie Nybegynder
30. december 2004 - 15:48 #3
tak. svar :-)
Avatar billede erikjacobsen Ekspert
30. december 2004 - 15:51 #4
ingen forklaring?
Avatar billede funkyloonie Nybegynder
30. december 2004 - 15:52 #5
den gav du jo ;-) det virker
Avatar billede funkyloonie Nybegynder
30. december 2004 - 15:52 #6
name.replaceAll("*", "_"); skal være name.replaceAll("\\*", "_");
Avatar billede erikjacobsen Ekspert
30. december 2004 - 15:54 #7
Nej, jeg mener hvorfor der skal fire \-ere til at fjerne een?

Men du får den så alligevel:

1) I strenge i Java skal du skrive \\ for at få een \ - da det er escapetegnet
2) I .replaceAll skrier du faktisk et regulært udtryk. Her er \ også et escapetegn,
  så set som regulært udtryk skal det også stå der to gange

Og 2 gange 2 = fire. Bare derfor. Stroffer og backslashes er bare så sjove!
Avatar billede erikjacobsen Ekspert
30. december 2004 - 15:57 #8
name.replaceAll("\*", "_");
Avatar billede funkyloonie Nybegynder
30. december 2004 - 15:57 #9
Ja, jeg har luret den. Ellers havde jeg også spurgt uddybende som i det spg fra idag ;-) Tak.

og ja: "Stroffer og backslashes er bare så sjove!" :-)
Avatar billede funkyloonie Nybegynder
30. december 2004 - 15:58 #10
det andet spg fra idag skulle der stå
Avatar billede erikjacobsen Ekspert
30. december 2004 - 15:59 #11
Eller (men det er overkill)
      name.replaceAll("\\\*", "_");
" er nemlig ikke magisk i regulære udtryk
Avatar billede funkyloonie Nybegynder
30. december 2004 - 16:00 #12
min virker med 2 slashes: name.replaceAll("\\*", "_");
?!
Avatar billede erikjacobsen Ekspert
30. december 2004 - 16:06 #13
Det bør give syntaksfejl - du har prøvet at oversætte??
Avatar billede funkyloonie Nybegynder
30. december 2004 - 16:09 #14
der bliver smidt en fejl med en backslash. 2 virker fint og ja jeg har kørt oversat koden og afviklet den.

samme udformning med disse:
name = name.replaceAll("\\?", "_");
name = name.replaceAll("\\|", "_");
Avatar billede erikjacobsen Ekspert
30. december 2004 - 16:10 #15
Det er mig der ikke kan læse.
Jeg læser det som et " og du skriver *  - de ser næsten ens ud på min skærm ;))
Avatar billede funkyloonie Nybegynder
30. december 2004 - 16:12 #16
ok :)
Avatar billede erikjacobsen Ekspert
30. december 2004 - 16:12 #17
Men skal de alle erstattes med _ kan du bare

name = name.replaceAll("\\||\\?|\\\\|\\*", "_");

altså sætte et | imellem
Avatar billede funkyloonie Nybegynder
30. december 2004 - 16:13 #18
smart. jeg tror jeg er ved at fatte en hel del om regulære udtryk.
Avatar billede erikjacobsen Ekspert
30. december 2004 - 16:13 #19
Eller vende det om, så du definerer de lovlige tegn, og alle andre erstattes:

name = name.replaceAll("[^a-zA-Z0-9]", "_");

fx.
Avatar billede funkyloonie Nybegynder
30. december 2004 - 16:15 #20
ja. ligesom i php. havde godt overvejet om java kunne nogle af phps smarte tricks. men ikek testet. :)
Avatar billede erikjacobsen Ekspert
30. december 2004 - 16:22 #21
Det er ikke specielt PHPsk ;) MEn ja, et sprog uden regulære udtryk er lidt kedeligt.
Avatar billede funkyloonie Nybegynder
30. december 2004 - 16:23 #22
ok
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