c#在字符串中间插入字符串

时间:2012-05-30 02:31:08

标签: c# asp.net html

我有一个很长的字符串。在我对字符串进行数据绑定之前,我希望能够通过插入更多文本来修改字符串。例如,我有一个字符串<a href="/a/info/a.html"><img src="/userimage/imgs.jpg"/></a>我需要在/ a之前和/ userimage之前插入http://m.mydom.com。请注意,这将始终相同,因此可以安全地说我要添加的字符串将是一致的。我想用lamda或c#来做这件事。谢谢你的帮助。

3 个答案:

答案 0 :(得分:8)

如果您需要对页面上的所有相对路径执行此操作,使用C#来完成此操作实际上不是最好的工具。

HTML附带一个名为base (see spec information)的元素,用于明确指定文档的基本URI。如果您将HTML更改为以下内容:

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

图像和锚点都指向正确的基础。不相信我?看看这个jsFiddle demonstating the amazingness of base

答案 1 :(得分:1)

你能不能使用String.Replace

var s = "<a href=\"/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");

不是最好的方法,你总是可以使用RegEx。

答案 2 :(得分:1)

您可以使用简单的正则表达式:

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

(?<=...)是一个后视; $0是捕获组0的内容,它是替换前链接的内容。