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

本文关键字:字符串 有效地 插入 查找 | 更新日期: 2023-09-27 18:02:03

我需要能够解析包含XML的字符串并通过修改标记来'修复'它。例如,我需要将所有出现的fontSize="16"替换为fontSize="16px".

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

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

试试Regex.Replace():

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

第二个参数查找fontsize="..."的所有示例,其中...仅表示数字。因为后面有一个",所以它不会匹配任何已经在16px形式中的内容。第三个参数告诉它用什么来替换匹配-在本例中,是在数字($1)之后添加一个额外的px的相同字符串。

如果您使用的是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>