使用正则表达式替换换行符

4

如何使用正则表达式替换所有类型的换行符(CR、LF和CrLf)?

我尝试了不同的"\n"和"\r"组合,但都无法找到它们。

formatedString = System.Text.RegularExpressions.Regex.Replace(text, "\r\n", "[Exp 1]")

以下代码可以完成工作,但是我无法使用正则表达式替换换行符,这让我感到困扰。
formatedString = formatedString.Replace(Environment.NewLine, "[Environment.NewLine]") ' Equals CR
formatedString = formatedString.Replace(ControlChars.CrLf, "[ControlChars.CrLf]") ' CR and LF
formatedString = formatedString.Replace(ControlChars.Cr, "[ControlChars.Cr]") ' Carriage Return (CR)
formatedString = formatedString.Replace(ControlChars.Lf, "[ControlChars.Lf]") ' Line Feed (LF)

欢迎提出所有有关IT技术的建议!:)


我迄今为止最好的表达是:“(\r\n | \n | \r)” - Stefan
4个回答

5

\r\n\r\n 应该涵盖所有换行情况。任何系统都不使用 \n\r(至少我所知道的...)

在 VB 中,如果不使用正则表达式,可以替换所有:

VbCr
VbLf
VbCrLf

使用任何您喜欢的换行符(显然,您可以从要替换的“换行符/回车符”字符列表中省略首选项)


谢谢,那是一些打字错误 :P - Stefan
那么,解决方案有效吗?如果解决方案有效,请将其标记为答案。或者这只是您在此处发布的一个打字错误? - Erik A. Brandstadmoen
你的帖子启发了我写出了表达式"(\r\n|\n|\r)",所以我会将其标记为答案。 - Stefan

0
尝试这个(代码未经测试)-
formatedString  = Regex.Replace(text, "\r\n", "[Exp 1]", RegexOptions.Multiline)

0

@ipr101的示例占用了90%。但是在CrLf的情况下,它会创建2个“ ”而不是1个“ ”。 因此,我建议使用以下脚本:

Dim source = String.Concat("Some string", vbLf, "with", vbCr, "line", vbCrLf, "breaks")
Dim result = Regex.Replace(source, "(?:\r\n|\r|\n)", " ")

如果您想保留文本中的换行并在每一行开头添加空格前缀,您也可以使用以下代码:
Dim source = String.Concat("Some string", vbLf, "with", vbCr, "line", vbCrLf, "breaks")
Dim result = Regex.Replace(source, "(?:\r\n|\r|\n)", "$0   ")

0

已测试并正常工作:

dim source = String.Concat("Some string", VbLf, "with", VbCr, "line", VbCrLf, "breaks")
dim result = Regex.Replace(source, "[\r\n]", " ")

https://dotnetfiddle.net/BcMbhZ


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接