Removing carriage return and new-line from the end of a string in c#

后端 未结 12 1079
终归单人心
终归单人心 2020-12-02 13:57

How do I remove the carriage return character (\\r) and the new line character(\\n) from the end of a string?

相关标签:
12条回答
  • 2020-12-02 14:23

    This is what I got to work for me.

    s.Replace("\r","").Replace("\n","")
    
    0 讨论(0)
  • 2020-12-02 14:25
    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).

    0 讨论(0)
  • 2020-12-02 14:26

    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');
    
    0 讨论(0)
  • 2020-12-02 14:26

    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.

    0 讨论(0)
  • 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.

    0 讨论(0)
  • 2020-12-02 14:31

    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

    0 讨论(0)
提交回复
热议问题