2012-05-30 108 views
1

我有一個很長的字符串。在數據綁定字符串之前,我希望能夠通過插入更多文本來修改字符串。例如,我有一個字符串<a href="https://stackoverflow.com/a/info/a.html"><img src="/userimage/imgs.jpg"/></a>我需要在/ a之前和/ userimage之前插入http://m.mydom.com。請注意,這將始終是相同的,所以可以安全地說我想添加的字符串是一致的。我想用lamda或者c#來做到這一點。謝謝你的幫助。c#在字符串中間插入字符串

+0

那麼用戶目前不在http://m.mydom.com上? – scottheckel

+0

綁定數據,如何? – Nalaka526

回答

8

如果您需要對頁面上的所有相對路徑執行此操作,則使用C#來完成此操作實際上不是最佳工具。

HTML附帶一個名爲base (see spec information)的元素,用於明確指定文檔的基本URI。如果您將HTML更改爲以下內容:

<head> 
    <base href="http://m.mydom.com"> 
</head> 
<body> 
    <a href="https://stackoverflow.com/a/info/a.html"><img src="/userimage/imgs.jpg"/></a> 
</body> 

圖像和錨都將指向正確的底部。不要相信我?看看這個jsFiddle demonstating the amazingness of base

+1

+1 great tips :) –

1

不能只使用String.Replace

var s = "<a href=\"https://stackoverflow.com/a/info/a.html\"><img src=\"/userimage/imgs.jpg\"/></a>"; 
s.Replace("\"/a","\"http://m.mydom.com/a").Replace("\"/userimage", "\"http://m.mydom.com/userimage"); 

不是最好的方法,你總是可以使用正則表達式。

1

您可以使用一個簡單的正則表達式:

var regex = new Regex("(?<=(src|href)=\")([^\"]*)"); 
var s = "<a href=\"https://stackoverflow.com/a/info/a.html\"><img src=\"/userimage/imgs.jpg\"/></a>"; 
Console.WriteLine(regex.Replace(s, "http://m.mydom.com$0")); 

(?<=...)是回顧後; $0是捕獲組0的內容,它是替換之前鏈接的內容。