用C#替换句子中的文本?

时间:2012-10-20 12:54:02

标签: c# .net

我很抱歉这个看似非常愚蠢的问题,但我真的很困惑

句子:

 String myline = "<form name='oldvalue' action='old_value' method='get'>"

预期结果:

  <form name='oldvalue' action='new_value' method='get'>

我想在操作后的引号之间替换文本的值。

我不想使用myLine.Replace,因为句子中action属性的值是随机的,我并不关心它。它的价值我希望被new_value

取代

我怎样才能做到这一点!谢谢。

5 个答案:

答案 0 :(得分:5)

您可以使用regular expressions

using System.Text.RegularExpressions;

String myline = "<form name='oldvalue' action='old_value' method='get'>";
String new_value = "new_value";
Regex.Replace(myline, "action='(.*?)'", new_value);

UPDATE:

此代码实际返回<form name='oldvalue' new_value method='get'>

iedone为@Nacereddine提及)

如果您想返回<form name='oldvalue' action='new_value' method='get'>,请使用此<:p>

Regex.Replace(myline, @"(action=')(.*?)(')", "$1"+new_value+"$3");

答案 1 :(得分:2)

如果此行是唯一的输入,您只需使用正则表达式将action='(.*?)'更改为您喜欢的任何内容。

String input = "<form name='oldvalue' action='old_value' method='get'>";
String newAction = "action='new_value'";
var s = Regex.Replace(input, "action='(.*?)'", newAction);

输出:

s: "<form name='oldvalue' action='new_value' method='get'>"

但是,如果更大的图片实际上是修改HTML文档,那么你一定要看看Html Agility Pack

答案 2 :(得分:2)

看一下Regex.Replace方法:http://msdn.microsoft.com/de-de/library/vstudio/xwewhkd1.aspx

应该像

new Regex("action='.*?'").Replace(myline,"action='new_value'");

编辑:根据Nacereddine

的建议修复了正则表达式

答案 3 :(得分:0)

你可以这样做:

new Regex("action='([^\']*)'").Replace(myLine, "action='new_value'");

答案 4 :(得分:0)

尝试使用XmlDocument,如下所示。您还可以根据需要操作所有属性:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            XmlDocument doc = new XmlDocument();
            doc.LoadXml("<form name='oldvalue' action='old_value' method='get' />");
            foreach (XmlNode node in doc.GetElementsByTagName("form"))
            {
                node.Attributes["action"].Value = "new_value";
            }
            Console.Write(doc.OuterXml);
            Console.Read();
        }
    }
}