2011-02-07 10 views
0

ラベルを保持したまま、文字列内の内部イントラネットサイトへの参照をすべて削除する方法を探しています。例えばRegEx Stringから内部イントラネットリンクを削除する.NET

http://intranetを参照

Dim str As String = Nothing 
str &= "<a href=""http://intranet/somepage.asp"">Internal Page</a>" 
str &= "<a href=""http://www.external.com"">External Page</a>" 

ものは内部とみなされ、正規表現で解析し、除去する必要があることになります。

ご協力いただきありがとうございます。

ありがとうございました

答えて

2

正規表現の解決策ではありませんが、それは簡単です。上記のあなたの二つの例を考えると、あなたが行うことができ、以下:

Private Function IntranetCheck(ByVal link As String) As String 
    If link.ToLower().Contains("http://intranet/") Then 
     Return link.Split(">")(1).Split("<")(0) 
    Else 
     Return link 
    End If 
End Function 

使用法:

Dim str As String = Nothing 
str &= IntranetCheck("<a href=""http://intranet/somepage.asp"">Internal Page</a>") 
str &= IntranetCheck("<a href=""http://www.external.com"">External Page</a>") 

文字列で渡されたイントラネットのアドレスが含まれている場合、これはチェックして、そしてそれがない場合は、それが出て分割されます要素の内部テキストのみを返す文字列。

+0

ジョージ優れた例です。ありがとう! –

0

この種の処理にはHtml Agility Packを使用することを強くお勧めします。このツールを使用すると、次のようなことができます。

HtmlDocument doc; 
doc.Load(fileName); 
foreach(HtmlNode anchor in doc.DocumentNode.Descendants("a").Where(n => n.GetAttributeValue("href", string.Empty).Contains("intranet"))) 
{ 
    // Change your href attribute here 
    string newHref = anchor.GetAttributeValue("href", string.Empty).Replace("intranet", "somethingelse"); 
    anchor.SetAttributeValue("href", newHref); 
} 
+0

Jacob私はそれを調べ始める必要があるかもしれないHtmlアジリティパックについてもう少し言及しました。提案していただきありがとうございます。 –

+0

確かです。 htmlで作業するときは絶対必要です(IMO)。 –

関連する問題