Visual Studio正则表达式或宏将代码块转换为单行代码

时间:2014-10-14 11:43:32

标签: regex visual-studio macros

Visual Studio编辑器中是否有一种方法可以重新格式化代码块 - 例如属性或任何其他mulitline代码块 - 成一行?我将“文本编辑器”设置为“将块保留在单行上”,但是当它可以保持代码在单行上时,它不会重新格式化到单个行格式文档/选择上的行。我已尝试使用各种正则表达式模式替换,并且它可能找到行结尾,但我无法将其删除(\ n和后续行中的后续空格)并移动以下行。

我想知道如何重新格式化这个:

public int Age 
{ 
  get 
  { 
    return age; 
  } 
}

进入这个单线:

public int Age { get { return age; } }

任何人都非常擅长使用宏或使用正则表达式替换?

1 个答案:

答案 0 :(得分:1)

这是一个丑陋的正则表达式解决方案:

替换此模式:

^(\s*(?:(?:public|private|protected|internal|static|virtual|override|new)\s+)\S+\s+\S+)[\s\r\n]*\{[\s\r\n]*get[\s\r\n]*\{\s*(return\s+.+;)[\s\r\n]*\}[\s\r\n]*\}

有了这个:

$1 { get { $2 } }

出于某种原因,VS似乎 [\r\n]中包含\s,因为它应该。

但是由于这个解决方案很难看,你应该知道ReSharper可以轻松地重新格式化你的代码(使用iths代码清理功能)并且可以高度自定义。