'In C#, what's the difference between \n and \r\n?

In C#, what's the difference between \n and \r\n?



Solution 1:[1]

The Difference

There are a few characters which can indicate a new line. The usual ones are these two:

* '\n' or '0x0A' (10 in decimal) -> This character is called "Line Feed" (LF).
* '\r' or '0x0D' (13 in decimal) -> This one is called "Carriage return" (CR).

Different Operating Systems handle newlines in a different way. Here is a short list of the most common ones:

* DOS and Windows

They expect a newline to be the combination of two characters, namely '\r\n' (or 13 followed by 10).

* Unix (and hence Linux as well)

Unix uses a single '\n' to indicate a new line.

* Mac

Macs use a single '\r'.

Taken from Here

Solution 2:[2]

"\n" is just a line feed (Unicode U+000A). This is typically the Unix line separator.

"\r\n" is a carriage return (Unicode U+000D) followed by a line feed (Unicode U+000A). This is typically the Windows line separator.

Solution 3:[3]

\n = LF (Line Feed) // Used as a new line character on Unix

\r = CR (Carriage Return) // Used as a new line character on Mac

\r\n = CR + LF // Used as a new line character on Windows

(char)13 = \r = CR

Environment.NewLine = any of the above code based on the operating system

// .NET provides the Environment class which provides many data based on operating systems, so if the application is built on Windows, and you use CR + LF ("\n\r" instead of Environment.NewLine) as the new line character in your strings, and then Microsoft creates a VM for running .NET applications in Unix, then there will be problem. So, you should always use Environment.NewLine when you want a new line character. Now you need not to care about the operating system.

Solution 4:[4]

Basically comes down to Windows standard: \r\n and Unix based systems using: \n

http://en.wikipedia.org/wiki/Newline

Solution 5:[5]

\n is the line break used by Unix(-like) systems, \r\n is used by windows. This has nothing to do with C#.

Solution 6:[6]

They are just \r\n and \n are variants.

\r\n is used in windows

\n is used in mac and linux

Solution 7:[7]

It's about how the operating system recognizes line ends.

  • Windows user \r\n
  • Mac user \r
  • Linux uses \n

Morale: if you are developing for Windows, stick to \r\n. Or even better, use C# string functions to deal with strings which already consider line endings (WriteLine, and such).

Solution 8:[8]

You can insert one, or the other, or both:

  • \r\n inserts U+000DU+000A
  • \n\r inserts U+000AU+000D

If you intention is to indicate "the end of the line", different platforms, and different technologies, expect you to insert different things:

  • Windows: U+000DU+000A (i.e. \r\n)
  • HTTP: U+000DU+000A (i.e. \r\n)
  • HTML: U+000A (i.e. \n)
  • Unix: U+000A (i.e. \n)
  • Macintosh: U+000D (i.e. \r)
  • zOS: U+0085 (i.e. \x85)

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Kevin Panko
Solution 2 Jon Skeet
Solution 3 Peter Mortensen
Solution 4 James Hulse
Solution 5 Adrian Grigore
Solution 6 Thalaivar
Solution 7 Peter Mortensen
Solution 8 Ian Boyd