adrianp
adrianp

Reputation: 183

Split string with three words

What is the best way to split a string containing three words?

My code looks like this right now (see below for updated code):

BufferedReader infile = new BufferedReader(new FileReader("file.txt"));

        String line;
        int i = 0;

        while ((line = infile.readLine()) != null) {
            String first, second, last;
            //Split line into first, second and last (word)

            //Do something with words (no help needed)
            i++;
        }

Here is the full file.txt:

Allegrettho     Albert          0111-27543
Brio            Britta          0113-45771
Cresendo        Crister         0111-27440
Dacapo          Dan             0111-90519
Dolce           Dolly           0116-31418
Espressivo      Eskil           0116-19042
Fortissimo      Folke           0118-37547
Galanto         Gunnel          0112-61805
Glissando       Gloria          0112-43918
Grazioso        Grace           0112-43509
Hysterico       Hilding         0119-71296
Interludio      Inga            0116-22709
Jubilato        Johan           0111-47678
Kverulando      Kajsa           0119-34995
Legato          Lasse           0116-26995
Majestoso       Maja            0116-80308
Marcato         Maria           0113-25788
Molto           Maja            0117-91490
Nontroppo       Maistro         0119-12663
Obligato        Osvald          0112-75541
Parlando        Palle           0112-84460
Piano           Pia             0111-10729
Portato         Putte           0112-61412
Presto          Pelle           0113-54895
Ritardando      Rita            0117-20295
Staccato        Stina           0112-12107
Subito          Sune            0111-37574
Tempo           Kalle           0114-95968
Unisono         Uno             0113-16714
Virtuoso        Vilhelm         0114-10931
Xelerando       Axel            0113-89124

New code as @Pshemo suggested:

public String load() {
    try {
        Scanner scanner = new Scanner(new File("reg.txt"));

        while (scanner.hasNextLine()) {
            String firstname = scanner.next();
            String lastname = scanner.next();
            String number = scanner.next();
            list.add(new Entry(firstname, lastname, number));
        }
        msg = "The file reg.txt has been opened";
        return msg;
    } catch (NumberFormatException ne) {
            msg = ("Can't find reg.txt");
            return msg;
    } catch (IOException ie) {
            msg = ("Can't find reg.txt");
            return msg;
    }
}

I receive multiple errors, what's wrong?

Upvotes: 0

Views: 242

Answers (4)

Pshemo
Pshemo

Reputation: 124265

Assuming that each line always contains exactly three words instead of split you can simply use Scanners method next three times for each line.

Scanner scanner = new Scanner(new File("file.txt"));
int i = 0;
while (scanner.hasNextLine()) {
    String first = scanner.next();
    String second = scanner.next();
    String last = scanner.next();
    //System.out.println(first+": "+second+": "+last);
    i++;
}

Upvotes: 1

learner
learner

Reputation: 3110

String []parts=line.split("\\s+");

System.out.println(parts[0]);
System.out.println(parts[1]);
System.out.println(parts[parts.length-1]);

Upvotes: 0

Christian Tapia
Christian Tapia

Reputation: 34166

Assuming the line has 3+ words, use the split(delimiter) method:

String line = ...;

String[] parts = line.split("\\s+"); // Assuming words are separated by whitespaces, use another if required

then you can access to the first, second and last respectively:

String first = parts[0];
String second = parts[1];
String last = parts[parts.length() - 1];

Remember that indexes starts with 0.

Upvotes: 0

TheLostMind
TheLostMind

Reputation: 36304

line.split("\\s+"); // don't use " ". use "\\s+" for more than one whitespace

Upvotes: 0

Related Questions