我有一个很长的字符串。在对字符串进行数据绑定之前,我希望能够通过插入更多文本来修改字符串。例如,我有一个字符串,<a href="/a/info/a.html"><img src="/userimage/imgs.jpg"/></a>
我需要在 /a 之前和 /userimage 之前插入http://m.mydom.com 。请注意,这将始终相同,因此可以肯定地说我要添加的字符串将是一致的。我想用 lamda 或只用 c# 来做这件事。谢谢你的帮助。
问问题
337 次
3 回答
8
如果您需要对页面上的所有相对路径执行此操作,则使用 C# 来完成此操作实际上并不是最好的工具。
HTML 带有一个名为base
(参见规范信息)的元素,用于显式指定文档的基本 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 展示了base
.
于 2012-05-30T02:42:01.907 回答
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");
不是最好的方法,你总是可以使用正则表达式。
于 2012-05-30T02:38:46.623 回答
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
的内容,也就是替换前的链接内容。
于 2012-05-30T02:47:58.113 回答