我很抱歉这个看似非常愚蠢的问题,但我真的很困惑
句子:
String myline = "<form name='oldvalue' action='old_value' method='get'>"
预期结果:
<form name='oldvalue' action='new_value' method='get'>
我想在操作后的引号之间替换文本的值。
我不想使用myLine.Replace,因为句子中action属性的值是随机的,我并不关心它。它的价值我希望被new_value
我怎样才能做到这一点!谢谢。
答案 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);
此代码实际返回<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();
}
}
}