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

本文关键字:字符串 插入 中间 | 更新日期: 2023-09-27 18:35:45

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

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

如果需要对页面上的所有相对路径执行此操作,则使用 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的惊人之处。

你不能只使用 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");

不是最好的方法,您始终可以使用正则表达式。

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

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的内容,这是替换前的链接内容。