How to make Scanner Properly Read Escape Characters?
java, java.util.scanner
Solution
If `\n` is written is the file you can't use `nextLine()` because there is not `\n` (end of line) but instead there is `\\n` (two characters).
Instead try with a delimiter :
Scanner sc = new Scanner(new File("/home/alain/Bureau/ttt.txt"));
sc.useDelimiter("\\\\n");
while(sc.hasNext()){
System.out.println(sc.next());
}
Output :
Hello World!
I've been trying to get this to work for a while now.
Frustrating.
EDIT:
If you want to read the file and replace the `\n` in the text with actual EOL. You can simply use :
Scanner sc = new Scanner(new File("/home/alain/Bureau/ttt.txt"));
//loop over real EOL
while(sc.hasNextLine()){
//Replace the `\n` in the line with real EOL.
System.out.println(sc.nextLine().replace("\\n", System.getProperty("line.separator")));
}
Problem
I'm reading from a file that reads something like all on one line: ``` Hello World!\nI've been trying to get this to work for a while now.\nFrustrating.\n ``` And my Scanner reads that from the file and puts it in a String: ``` Scanner input = new Scanner(new File(fileName)); String str = input.nextLine(); System.out.print(str); ``` Now, I want the output then to be: ``` Hello World! I've been trying to get this work for a while now. Frustrating. ``` But instead I'm getting the exact same thing as the input. That is, each \n is included in the output and everything is on one line instead of separate lines. I thought that Scanner would be able to read the escape character properly but it's instead copying it onto the String like it's \\n.