Regex (C#): Replace \n with \r\n

前端 未结 7 1805
陌清茗
陌清茗 2020-12-13 18:11

How can I replace lone instances of \\n with \\r\\n (LF alone with CRLF) using a regular expression in C#?

Sorry if it\'s a stupid question, I\'m new to Regex.

7条回答
  •  心在旅途
    2020-12-13 18:27

    Will this do?

    [^\r]\n
    

    Basically it matches a '\n' that is preceded with a character that is not '\r'.

    If you want it to detect lines that start with just a single '\n' as well, then try

    ([^\r]|$)\n
    

    Which says that it should match a '\n' but only those that is the first character of a line or those that are not preceded with '\r'

    There might be special cases to check since you're messing with the definition of lines itself the '$' might not work too well. But I think you should get the idea.

    EDIT: credit @Kibbee Using look-ahead s is clearly better since it won't capture the matched preceding character and should help with any edge cases as well. So here's a better regex + the code becomes:

    myStr = Regex.Replace(myStr, "(?

提交回复
热议问题