查找字符串的出现并有效地插入新字符串

时间:2014-05-06 15:15:41

标签: c# .net string

我需要能够解析包含XML的字符串并通过修改标记来“修复”它。例如,我需要用fontSize="16"

替换所有出现的fontSize="16px".

在c#和.NET中执行此操作的有效(但可读)方式是什么?我已经在while循环中开始使用IndexOf的路线,但认为必须有更好的方法来做到这一点。

2 个答案:

答案 0 :(得分:7)

尝试Regex.Replace()

Regex.Replace(inputText, @"fontSize=""(\d+)""", @"fontSize=""$1px""")

第二个参数查找fontsize="..."的所有示例,其中...仅表示数字。由于存在以下",因此它与16px形式中已有的内容不匹配。第三个参数告诉它用什么替换匹配 - 在这种情况下,在数字(px)之后添加了额外$1的相同字符串。

答案 1 :(得分:3)

如果您正在使用XML,我会使用正确的工具来完成工作:XDocument。这是一个例子:

var input = @"
<root>
  <someTag fontSize=""16"" />
  <someTag otherAttribute=""12"" />
</root>";

var doc = XDocument.Parse(input);

var allAttributes = doc.Descendants().Attributes();

var fontSizeAttributes = allAttributes.Where(x => x.Name == "fontSize");

foreach (var f in fontSizeAttributes)
    f.Value = Regex.Replace(f.Value, "^([0-9].)$", "$1px");

doc中的结果包含:

<root>
  <someTag fontSize="16px" />
  <someTag otherAttribute="12" />
</root>