Avatar billede birkis Nybegynder
16. april 2004 - 19:53 Der er 7 kommentarer og
1 løsning

"Søgning i String"

Hvordan kan jeg finde ud af om en String indeholder ""?

Og hvis den gør, hvordan kan jeg "få fat på" det som er mellem ""?

Eksempel:
Dette er en String til "test".

Her vil jeg have ordet test.
Avatar billede arne_v Ekspert
16. april 2004 - 19:56 #1
To muligheder:

1)  indexOf of substring

2)  regular expression (forudsat Java 1.4)
Avatar billede arne_v Ekspert
16. april 2004 - 19:58 #2
String s;
int ix1 = s.indexOf('"');
int ix2 = s.indexOf('"',ix1+1);
String del = s.substring(ix1+1,ix2);
Avatar billede arne_v Ekspert
16. april 2004 - 20:06 #3
import java.util.regex.*;

public class Find {
    public static void main(String[] args) {
        String s = "Dette er en String til \"test\".";
        int ix1 = s.indexOf('"');
        int ix2 = s.indexOf('"', ix1 + 1);
        String del = s.substring(ix1 + 1, ix2);
        System.out.println(del);
        Pattern p = Pattern.compile("(?:\")(.*)(?:\")");
        Matcher m = p.matcher(s);
        while (m.find()) {
            System.out.println(m.group(1));
        }
    }
}
Avatar billede birkis Nybegynder
16. april 2004 - 21:50 #4
Det ser nemmest ud med 16/04-2004 19:58:31, så jeg bruger nok den.

Tak skal du have!
Avatar billede martinbk Nybegynder
17. april 2004 - 00:02 #5
en lille tosset indskydelse, en StringTokenizer ville vel også løse problemet :)
Avatar billede arne_v Ekspert
17. april 2004 - 00:12 #6
Man kunne også lave en løsning med StringTokenizer.

Men jeg tror at det ville kræve flere linier.
Avatar billede birkis Nybegynder
18. april 2004 - 01:54 #7
Nu er ikke jeg helt kendt med StringTokenizer, men betyder ikke dette

"StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code." (fra Javadoc for StringTokenizer)

at man hellere skal vælge en anden metode end StringTokenizer?
Avatar billede arne_v Ekspert
18. april 2004 - 09:40 #8
Det står der i Java 1.5 beta docs.

Jeg håber at de har fået gjordt noget ved regex performance fordi
String split er 4 gange langsommere end brug af StringTokenizer i 1.4.1 (Win32).
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