Avatar billede elites Nybegynder
28. maj 2004 - 12:39 Der er 8 kommentarer

finding af tegn som tabulator og space osv. i strings

Hejsa..
Jeg har en tabulater seperet fil, som jeg gerne vil løbe i gennem i et java program...
Hvordan kan jeg søge efter tabulator karakteren?

Mvh Henrik
Avatar billede arne_v Ekspert
28. maj 2004 - 12:48 #1
String line = "a\tb";
int ixtab = line.indexOf('\t');

virker men jeg tror at du leder efter:

String line = "a\tb";
String[] parts = line.split("\t");

(kræver Java 1.4+)
Avatar billede elites Nybegynder
28. maj 2004 - 13:00 #2
Jamen... det er strings fra en fil...

Er der ikke en måde hvor man kan skrive karakterens værdi ud...
F.eks. karakter 32 osv... eller karakteren for et sideskift osv... og så søge efter disse værdier i en string.
Avatar billede arne_v Ekspert
28. maj 2004 - 13:03 #3
Jeg gik ud fra at du læste linier ind og ville parse de tab separerered dele ud.

Men altså:

int ix = line.indexOf(' ');
int ix = line.indexOf('\t');

etc. søger efter et tegn.
Avatar billede jakoba Nybegynder
28. maj 2004 - 14:49 #4
du kan benytte regular expressions for at søge efter flere forskellige på een gang:
http://java.sun.com/docs/books/tutorial/extra/regex/

mvh JakobA
Avatar billede Slettet bruger
28. maj 2004 - 18:58 #5
Hvis man blot skulle gennemkøbe en streng for forekomster af tabulatortegn, kunne man jo også bare løbe strengen igennem med en løkke og spørge på charAt(index) ?

En hel anden måde ville vel være at bruge en StringTokenizer....
Avatar billede arne_v Ekspert
28. maj 2004 - 21:12 #6
Komplet program:

import java.io.*;

public class ReadTab {
    public static void main(String[] args) throws Exception {
        BufferedReader r = new BufferedReader(new FileReader("C:\\TEST.TAB"));
        String line;
        while ((line = r.readLine()) != null) {
            System.out.println("line=" + line);
            String[] parts = line.split("\t");
            for (int i = 0; i < parts.length; i++) {
                System.out.println("part " + i + "=" + parts[i]);
            }
        }
    }
}
Avatar billede arne_v Ekspert
28. maj 2004 - 21:14 #7
Samme med StringTokenizer (for Java 1.3 og tidligere):

import java.io.*;
import java.util.*;

public class ReadTab2 {
    public static void main(String[] args) throws Exception {
        BufferedReader r = new BufferedReader(new FileReader("C:\\TEST.TAB"));
        String line;
        while ((line = r.readLine()) != null) {
            System.out.println("line=" + line);
            StringTokenizer st = new StringTokenizer(line, "\t");
            for (int i = 0; i < st.countTokens(); i++) {
                System.out.println("part " + i + "=" + st.nextToken());
            }
        }
    }
}
Avatar billede arne_v Ekspert
16. juni 2004 - 22:52 #8
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