使用VB.net替换文件中的字符串 - 不区分大小写

时间:2014-05-30 01:10:49

标签: regex vb.net string replace

给出以下部分文件示例:

<SellGrey>True</SellGrey>
<SellWhite>false</SellWhite>
<SellGreen>false</SellGreen>
<SellBlue>false</SellBlue>

进行不区分大小写的搜索和替换的最佳方法是什么,同时在输出上保持正确的大小写。

例如:

<SellGrey>True</SellGrey>

<Sellgrey>tRue</Sellgrey>

将是我正在寻找的,但替代,将永远是:

<SellGrey>False</SellGrey>

最后,请不要挂断&#34;标签&#34;由于文件格式错误,所以读取/写入xml会导致错误。请仔细查看字符串 - 不区分大小写的字符串搜索和替换,逐行。

提前致谢。

1 个答案:

答案 0 :(得分:1)

由于你没有提供有关标签的更多细节,我使用字典来确保正确的套管。

Dim input as String = "<Sellgrey>tRue</Sellgrey>"
Dim pattern as String = "<(?<tag>.+)>(?<value>(true|false))</.+>"

'building a dictionary to specify how to proper case
Dim tagFormatter as new Dictionary(Of String, String)
tagFormatter.Add("sellgrey", "ShellGrey")
tagFormatter.Add("sellwhite", "SellWhite")
tagFormatter.Add("sellgreen", "SellGreen")
tagFormatter.Add("sellblue", "SellBlue")

'build the new string using lambda
Dim result = Regex.Replace(input, pattern, _
    Function(m) String.Format("<{0}>{1}</{0}>", _
        tagFormatter(m.Groups("tag").Value.ToLower), _
        If(m.Groups("value").Value = "true", "True", "False")), _
    RegexOptions.IgnoreCase)