Javarico
Javarico

Reputation: 13

Is there any way to let the program recognize "\n" in text files as line break code?

I've been creating a game in Java for a while and I used to write all the in-game texts directly in my code like this:

String text001 = "You're in the castle.\n\nWhere do you go next?"

But recently I decided to write all the in-game texts in a text file and tried to let the program read them and put them into a String array since the amount of the texts has increased a lot and it made my code incredibly long. The reading went well except one thing. I've inserted line break codes in dialogues and although the code worked properly when I wrote it directly in my code, they are no longer recognized as line break code when I try to read them from a text file.

It is supposed to be displayed as:

You're in the castle.

Where do you go next?

But now it is displayed as:

You're in the castle.\n\nWhere do you go next?

The code doesn't recognize "\n" as line break code any more.

Here's the code :

import java.io.File;
import java.util.Scanner;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) {
        new Main();
    }

    public Main() {
        Scanner sc;
        StringTokenizer token;
        String line;
        int lineNumber = 1;
        String id[] = new String[100];
        String text[] = new String[100];

        try {
            sc = new Scanner(new File("sample.txt"));
            while ((line = sc.nextLine()) != null) {
                token = new StringTokenizer(line, "|");
                while (token.hasMoreTokens()) {
                    id[lineNumber] = token.nextToken();
                    text[lineNumber] = token.nextToken();
                    lineNumber++;
                }
            }
        } catch (Exception e) {
        }
        System.out.println(text[1]);
        String text001 = "You're in the castle.\n\nWhere do you go next?";
        System.out.println(text001);
    }
}

And this is the content of the text file:

castle|You're in the castle.\n\nWhere do you go next?
inn|You're in the inn. \n\nWhere do you go next?

I would be grateful if anyone tells me how to fix this. Thank you.

Upvotes: 1

Views: 307

Answers (1)

Andy Turner
Andy Turner

Reputation: 140514

Just use

text[lineNumber] = token.nextToken().replace("\\n", "\n");

There is nothing inherently special about \n in a text file. It is just a \, followed by a \n.

It is only in Java (or other languages) which define that this sequence of characters - in a char or string literal - should be interpreted as a 0x0a (ASCII newline) character.

So, you can replace the character sequence with the one you want it to be interpreted as.

Upvotes: 3

Related Questions