How do I remove the carriage return character (\\r)
and the new line character(\\n)
from the end of a string?
This is what I got to work for me.
s.Replace("\r","").Replace("\n","")
s.TrimEnd();
The above is all I needed to remove '\r\n' from the end of my string.
The upvoted answer seems wrong to me. Firstly, it didn't work when I tried, secondly, if it did work I would expect that s.TrimEnd('\r', '\n') would only remove either a '\r' or a '\n', so I'd have to run it over my string twice - once for when '\n' was at the end and the second time for when '\r' was at the end (now that the '\n' was removed).
This will trim off any combination of carriage returns and newlines from the end of s
:
s = s.TrimEnd(new char[] { '\r', '\n' });
Edit: Or as JP kindly points out, you can spell that more succinctly as:
s = s.TrimEnd('\r', '\n');
If there's always a single CRLF, then:
myString = myString.Substring(0, myString.Length - 2);
If it may or may not have it, then:
Regex re = new Regex("\r\n$");
re.Replace(myString, "");
Both of these (by design), will remove at most a single CRLF. Cache the regex for performance.
If you are using multiple platforms you are safer using this method.
value.TrimEnd(System.Environment.NewLine.ToCharArray());
It will account for different newline and carriage-return characters.
I use lots of erasing level
String donen = "lots of stupid whitespaces and new lines and others..."
//Remove multilines
donen = Regex.Replace(donen, @"^\s+$[\r\n]*", "", RegexOptions.Multiline);
//remove multi whitespaces
RegexOptions options = RegexOptions.None;
Regex regex = new Regex("[ ]{2,}", options);
donen = regex.Replace(donen, " ");
//remove tabs
char tab = '\u0009';
donen = donen.Replace(tab.ToString(), "");
//remove endoffile newlines
donen = donen.TrimEnd('\r', '\n');
//to be sure erase new lines again from another perspective
donen.Replace(Environment.NewLine, "");
and now we have a clean one row