0

本当にばかげているように見えるこの質問を申し訳ありませんが、私はそれと本当に混乱しています

文:

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

期待される結果 :

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

アクションに続く引用符の間のテキストの値を置き換えたい。

文中のaction属性の値がランダムであり、気にしないため、myLine.Replaceを使用したくありません。その値が何であれ、私はに置き換えたいnew_value

どうすればこれを達成できますか?ありがとうございました。

4

5 に答える 5

5

正規表現を使用できます:

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'>

@Nacereddineが言及したようにiedone)

戻りたい場合は<form name='oldvalue' action='new_value' method='get'>これを使用してください:

Regex.Replace(myline, @"(action=')(.*?)(')", "$1"+new_value+"$3");
于 2012-10-20T13:02:13.820 に答える
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ドキュメントを変更することである場合は、HtmlAgilityPackを必ず確認する必要があります。

于 2012-10-20T12:59:54.100 に答える
2

Regex.Replaceメソッドをご覧ください:http://msdn.microsoft.com/de-de/library/vstudio/xwewhkd1.aspx

次のようなものにする必要があります

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

編集:Nacereddineによって提案された正規表現を修正

于 2012-10-20T13:02:52.940 に答える
0

あなたはこれを行うことができます:

new Regex("action='([^\']*)'").Replace(myLine, "action='new_value'");
于 2012-10-20T13:03:52.257 に答える
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();
        }
    }
}
于 2012-10-20T13:06:43.453 に答える