AlgoCademy
Lesson
Code

Escaping characters in {lang}


There are times when we want to use quotes inside a string. For example, suppose we want to print the message I am John "the coder" Doe:

System.out.println("I am John "the coder" Doe");

You can already see by the text color that we have a problem. {lang} recognizes the string to be only I am John .

{lang} finds the first quotation mark and interprets that the string starts there. But then, it finds the second quotation mark (after John ) and interprets the string ends there.

Character escaping comes to our rescue!


Escaping characters:

In {lang}, some characters serve different functions and so cannot be displayed or printed like other characters. These characters are referred to as special characters.

For example, double quotes (") is considered a special character by {lang}. Its job is to let {lang} know when a string declaration starts / ends.

There is a way to print special characters like these in {lang}, and that is by using the backslash character (\).

When we put \ before a special character, we tell {lang}:

"Hey, I know this is a special character, but I don't want to use it like that here. I just want to print it like I print any other character."

For example, when putting a \ before a double quote, {lang} no longer interprets that as being the end of the string:

System.out.println("I am John \"the coder\" Doe");

System.out.println("After \"Coding 101\" we'll solve some problems");

The output of this code is:

I am John "the coder" Doe
After "Coding 101" we'll solve some problems

Escaping backslash:

Sometimes we might want to print strings that contain character \, such as a file path in your PC:

System.out.println("C:\Users\Andy\Games");

This code looks perfectly fine at first sight, but if you run it, it would produce an error: illegal escape character.

When {lang} sees \U, it supposes that you are trying to escape character U, which is not a special character thus cannot be escaped.

Now that you've learned about its function, what type of character do you think \ is in {lang}? It's a special character!

And like any special character, it can also be escaped by putting another \ in front of it (\\):

System.out.println("C:\\Users\\Andy\\Games");

The output of this code is:

C:\Users\Andy\Games

New line character:

Similarly, the escape sequence can be used to make an otherwise printable character serve a special function.

For example, the letter n can be printed normally, but adding a backslash before it (\n) will indicate the start of a new line:

System.out.println("Hello world!\nWhat a good day for coding!\n");
System.out.println("Let's have a blast!");

The output of this code is:

Hello world!
What a good day for coding!

Let's have a blast!

Notice the empty line after What a good day for coding! ?

That's one new line from the \n plus the new line that System.out.println() prints no matter what the message is.


Assignment
Follow the Coding Tutorial and let's escape some characters!


Hint
Look at the examples above if you get stuck.