用List <datatype>替换dataType []

时间:2019-05-01 19:35:15

标签: c# regex visual-studio notepad++ xsd.exe

我用xsd.exe生成了xsd的dataModel。我想用通用列表=> dataType[]交换List<dataType>。我需要自动更改语法,因为dataModel类很大。

我的第一个意图是直接使用xsd.exe生成正确的代码。经过一番调查,我发现这不是一个选择。

然后我尝试用Regex解决我的问题,但是我并不幸运找到正确的表达方式。可能有人可以帮助我。可以直接在Visual Studio中进行修改,或者如果在Notepad ++中无法进行修改,则可以进行修改。

我要做什么:

public dataType1[] dataType1 => public List<dataType1> dataType1
public dataType2[][]         => public List<List<dataType2>>
public dataType3[][][]       => public List<List<List<dataType3>>>

我在VS中使用Regex的方法:

// Find with:
(?<=\s)[A-Za-z_0-9]+(?=(\[\]){1})

// Replace with:
List<$&>

不幸的是,我的方法无法一步到位。另外,我必须将1到n []分开。最后,我必须删除所有[]并查找/替换可能导致错误的内容。

有人可以帮我解决一个问题吗?使用Regex或其他可能的东西。对我而言,重要的是一种可以在创建dataModel之后快速轻松地部署的解决方案。

1 个答案:

答案 0 :(得分:1)

您可以使用nodepad ++宏解决此问题。

  1. 单击Start recording macro按钮

  2. Control + H 启动搜索并替换

  3. 查找内容:(?<=\s)([<>A-Za-z_0-9]+)\[\]

    替换为:List<$1>

    全部替换

  4. 在不关闭搜索对话框的情况下,单击查找下一个

  5. 单击Stop recording macro按钮。

  6. 现在转到要处理的文件

  7. 单击Run a macro multiple times按钮

  8. 选择Run until the end of file

  9. 运行

注意::录制宏后,可以“保存”该宏以供以后重用。保存后,它将在记事本++重新启动后可用。