-1

次の正規表現を見つける必要があります。

タグにいくつかのコンテンツがありdiv、そこに多くのアンカーリンクが含まれています。したがって、私のタスクはhref、 "components / showdoc.aspx?docid ="の形式でアンカーリンクを検索onclickし、そのアンカーリンクのみのイベントを追加し、残りのアンカーリンクを残すことです。

<div id="content" runat="server">
    <a href="www.xxxx.com/components/showdoc.aspx?docid=100">test doc</a>
</div>

この式は、それにターゲットを与えて追加します。

RegEx.Replace(inputString, "<(a)([^>]+)>", "<$1 target=""_blank""$2>")

ありがとう

4

2 に答える 2

0

正規表現を使用して html を解析しないでください。悪です。

HTML Agility Packを使用できます。NuGet Packageも含まれています。

または、jQuery の 1 行を使用して、クライアント側でこれを行うこともできます。

$('a[href*="components/showdoc.aspx?docid="]').on('click', myClickFunction);

これはAttribute Contains Selectorを利用しています。

クリック関数で docid を見つけたい場合は、クリック関数で次のように記述できます。

function myClickFunction(e){
    var href = $(this).attr('href');
    var docId = href.split('=')[1];
    alert(docId);
}

これは、クエリ文字列値が 1 つしかないことを前提としていることに注意してください。これをより堅牢にしたい場合は、次の回答のようにすることができます

于 2012-08-24T15:57:23.503 に答える
0

HTML ファイルに恒久的な変更を加える場合は、最初に HTML 解析をコントロールにロードして管理しますSystem.Windows.Forms.WebBrowser。そこから、HTML に対して DOM のような変更を行うことができRegex.Replaceます。未加工のファイルに対して実行することによって引き起こされる可能性のある構文解析の破損の危険な影響はありません。(どうやら RegEx + HTML は一部の人にとって深刻な問題です)。

したがって、最初にコードで次のことを行います。

WebBrowser myBrowser = new WebBrowser();
myBrowser.URL = @"C:\MyPath\MyFile.HTML";
HtmlElement myDocBody = myBrowser.Document.Body;

次に、プロパティとメソッドを使用して、ドキュメントの本文をナビゲートし、divタグを探してアンカー タグを探すことができます。HtmlElement.IdHtmlElement.GetAttribute

注: URL 文字列に対して RegEx マッチングを使用してもかまいませんが、GetAttribute("href")メソッドからそれらを抽出した後でのみ使用してください。

メソッドを追加するには、onClickメソッドを呼び出すだけHtmlElement.SetAttributeです。

すべての変更が完了したら、WebBrowser.DocumentTextファイルに書き込み、変更を保存します。

ここに参照があります: http://msdn.microsoft.com/en-us/library/system.windows.forms.htmlelement.aspx

于 2012-08-24T16:25:39.793 に答える