查找并替换-添加回车符或换行符


183

在以下字符串被解析的情况下。

ford mustang,10,blue~~?bugatti veyron,13,black

我想,以取代~~?carriage return

替换为\n仅添加字符串"\n"

如何才能做到这一点?

Answers:


272

确保在“查找和替换”对话框中选择了“使用:正则表达式”:

查找/替换对话框使用正则表达式

请注意,对于Visual Studio 2010,此功能在Visual Studio Productivity Power Tools的“快速查找”扩展中不起作用(自2011年7月更新开始)。相反,您需要使用完整的“查找和替换”对话框(使用Ctrl + Shift + H或“编辑->查找和替换->在文件中替换”),并将范围更改为“当前文档”。


5
使用“查找”文本右边的“播放”按钮也很方便
2012年

3
如果你想匹配的特殊字符,如括号,不要忘记使用例如\)正则表达式时的...
切尔

2
?字符需要在正则表达式中转义,因为它表示前一个元素是可选的。因此,正确的“查找内容”文本是~~\?带有问号的反斜杠转义。您给出的答案适用于示例文本,因为它会贪婪地找到第二个波浪号并使用它,但是,如果文本中的任意位置也存在单个波浪号,则也会用换行符替换该波浪号。
ErikE

如果安装了Productivity Power Tools,您仍然可以先按ctrl + shit + h,然后按ctrl + h打开本机Visual Studio“查找/替换”窗口。
2015年

应当注意,如果选择了“使用正则表达式”,则也可以使用“ \ n”来查找(和替换)换行符。
雅各布·洛克德

28

您也可以尝试\x0d\x0a在“替换为”框中选中“使用正则表达式”框,以使用Visual Studio查找/替换获取回车+换行符。使用\n(换行)与\x0a


13

如果设置“使用正则表达式”标志,则\ n将被翻译。但是请记住,您必须修改搜索词以使其对正则表达式友好。在您的情况下,应像这样“ \〜\〜\?”将其转义 (无引号)。


3
在正则表达式中无需转义“〜”。这是一个文字字符。这是不正确的。
ErikE

12

如果要避免使用正则表达式时在搜索和替换字符串中转义特殊字符的麻烦,请执行以下步骤:

  1. 搜索您的原始字符串,并用正则表达式off替换为“ UniqueString42” 。
  2. 搜索“UniqueString42”,并以“UniqueString42 \ nUniqueString1337”取代它,用正则表达式
  3. 搜索“ UniqueString42”,并用正则表达式off替换为替换的第一行(通常是原始字符串)。
  4. 搜索“ UniqueString42”,并用正则表达式off替换为第二行。

请注意,即使您想手动选择匹配项以进行首次搜索和替换,也可以在最后三个步骤中安全地使用“全部替换”。

例如,如果要替换此代码:

public IFoo SomeField { get { return this.SomeField; } }

接着就,随即:

public IFoo Foo { get { return this.MyFoo; } }
public IBar Bar { get { return this.MyBar; } }

您将执行以下替换:

  1. public IFoo SomeField { get { return this.SomeField; } }XOXOXOXO关闭正则表达式)。
  2. XOXOXOXOXOXOXOXO\nHUHUHUHU(正则表达式)。
  3. XOXOXOXOpublic IFoo Foo { get { return this.MyFoo; } }关闭正则表达式)。
  4. HUHUHUHUpublic IFoo Bar { get { return this.MyBar; } }关闭正则表达式)。

@Alex如果您有一个切实可行的解决方案,可以避免在将其转换为正则表达式时避免手动转义搜索并替换文本,并在接下来的10分钟内修复以这种方式创建的怪物,那我将非常高兴它,因为我的回答只是一个丑陋的骇客。但是,正如您所看到的,在没有额外插件的情况下在普通Visual Studio上运行的所有其他答案都需要使用正则表达式,从而转义简单文本。
苏珊·杜彭(SuzanneDupéron)2013年

2
我并不是说这很糟糕。我的道歉我忘了带一个笑脸:D至于解决方案,没有,我没有涉及VS的解决方案。但是我发现,任何支持正则表达式(notepad ++等)的外部编辑器都可以很好地工作。
亚历克斯

2
UltraEdit是搜索替换之王-在这里,您只需标记这些行并开始搜索即可搜索换行符,换行符或其他内容。-对于替换,您只需输入\ n的^ n,\ r的^ r和\ t的^ t-如果只有VS2010会执行相同的操作:-)
Miros

您始终可以访问regex101.com来查看您的搜索字符串是否要匹配文字字符或被解释为Regex控制字符。
ErikE

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.