【问题标题】:Replace dataType[] with List<dataType>将 dataType[] 替换为 List<dataType>
【发布时间】:2019-09-20 08:10:32
【问题描述】:

我用xsd.exe 生成了一个 xsd 的数据模型。我想用通用列表 => List&lt;dataType&gt; 交换 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 中使用正则表达式的方法:

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

// Replace with:
List<$&>

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

有人可以帮我解决一步吗?要么使用正则表达式,要么可能使用不同的东西。对我来说重要的是一个解决方案,我可以在创建数据模型后快速轻松地部署它。

【问题讨论】:

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


    【解决方案1】:

    您可以使用 nodepad++ 宏来解决这个问题。

    1. 点击Start recording macro按钮

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

    3. 查找内容:(?&lt;=\s)([&lt;&gt;A-Za-z_0-9]+)\[\]

      替换为:List&lt;$1&gt;

      全部替换

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

    5. 点击Stop recording macro按钮。

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

    7. 点击Run a macro multiple times按钮

    8. 选择Run until the end of file

    9. 运行

    注意:录制宏后,您可以“保存”它以供以后重复使用。保存后,它将在 notepad++ 重启后可用。

    【讨论】:

    • 如果您想跳过repeat XXX times,仍然可以通过单个play 操作,但您需要记录一些额外的步骤。如果您愿意,请告诉我,我会重写我的答案@nindalf
    • 嗨@Julio,非常感谢您提供本指南。这对我来说效果很好。要完成这个线程,看看你的一步解决方案也会很有趣。 Notepad++ 宏很棒,到目前为止我还没有注意到它们。
    • @Nindalf,编辑为不依赖于999 次。希望它对您有用(更改:在步骤“3”之后添加一个额外的步骤并将第二步更改为最后一步
    猜你喜欢
    • 1970-01-01
    • 2019-07-27
    • 2012-06-05
    • 1970-01-01
    • 2023-03-22
    • 2022-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多