c# - 如何使用 C# 替换包含反斜杠的字符串中的某些值?

标签 c#

我有以下内容:

var topic = "<option value=\"123\">X</option>\r\n  <option value=\"456\">XX</option>\r\n";

还有一个如下所示的字符串:

var topicValue = "456";

有没有一种方法可以在 topicValue 匹配时创建如下所示的新主题字符串:

var topic = "<option value=\"123\">X</option>\r\n  <option value=\"456\" selected=\"selected\" >XX</option>\r\n";

我不确定如何创建一个正则表达式,该表达式可以与我的反斜杠一起使用 主题字符串。还有比使用正则表达式更简单的方法吗?

最佳答案

将 XML 作为字符串进行操作从来都不是一个好主意。看起来 topic 中有 XML 的一部分。为什么不把它当作 XML 来对待呢?首先,让我们将其设为有效的 XML,以便使用。

        <options>
              <option value=\"123\" isSelectd=\"false\">X</option>
              <option value=\"456\" isSelectd=\"false\">XX</option>
        </options>

此处添加了根节点 <options>,并且还添加了一个新属性 isSelectd,该属性对于两个子节点来说最初都是 false。应搜索并更新值为 456 的节点。现在使用 XmlDocument 类,您可以轻松实现您想要的目标。

        var topic = "<options>" + 
               "<option value=\"123\" isSelectd=\"false\">X</option>" +
               "<option value=\"456\" isSelectd=\"false\">XX</option>" + 
               "</options>";

        int selectedValue = 456;

        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(topic);
        foreach (XmlNode node in xmlDoc.ChildNodes[0].ChildNodes)
        {
            int value = Convert.ToInt32(node.Attributes[0].Value.ToString());
            if (value == selectedValue)
                node.Attributes[1].Value = "ture";
        }

        topic = xmlDoc.InnerXml;

主题现在包含以下 XML,

        <options>
              <option value=\"123\" isSelectd=\"false\">X</option>
              <option value=\"456\" isSelectd=\"true\">XX</option>
        </options>

关于c# - 如何使用 C# 替换包含反斜杠的字符串中的某些值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11964058/

相关文章:

c# - 进度条显示方法的执行

c# - WPF:为什么我应该使用现有的 MVVM 框架而不是编写自己的框架?

c# - 将2次之间的差异转换为毫秒?

c# - 在 GoDaddy 上通过 gmail SMTP 发送电子邮件

c# - 在 C# 和 C 之间传递对象

c# - WPF中的轻量级处理动画资源?

c# - 全局变量和局部变量澄清

c# - 发送带有视频的推文(创建状态时出错。)

c# - 尝试在 Xamarin Forms 中转换列表 <string> 时出错

c# - 将行插入 MySQL 数据库的最有效方法