【发布时间】:2014-12-20 00:26:35
【问题描述】:
我有一串来自数据库的文本。我还有一个来自数据库的链接列表,这些链接的起始索引和长度与我的字符串相对应。我想将文本中的链接附加为链接
<a href=...
即
var stringText = "Hello look at http://www.google.com and this hello.co.uk";
这将在数据库中
Link:http://www.google.com
Index:14
Length:21
Link:hello.co.uk
Index:45
Length:11
我最终想要
var stringText = "Hello look at <a href="http://www.google.com">http://www.google.com</a> and this <a href="hello.co.uk">hello.co.uk</a>";
字符串中可能有很多链接,所以我需要一种循环遍历这些链接并根据索引和长度进行替换的方法。我会根据链接(string.replace)循环并替换,但如果有两次相同的链接会导致问题
var stringText = "www.google.com www.google.com www.google.com";
www.google.com 将成为一个链接,第二次将使该链接内的链接...成为一个链接。
我显然可以找到第一个索引,但如果我在那个时候更改它,则索引不再有效。
有没有简单的方法可以做到这一点,还是我错过了什么?
【问题讨论】:
-
我猜你真的希望
<a href="http://hello.co.uk/">访问该站点,而不是<a href="hello.co.uk">,后者从http://example.net/somewhere/else转到http://example.net/somewhere/hello.co.uk。 -
对于这样的应用,我更喜欢标记而不是索引
-
这不是简单地对替换的起始索引进行排序并确保首先替换索引最高的那些吗?
-
@JonHanna 你是对的,这是一个糟糕的例子,在现实中我有一个用于这些场景的“OriginalTextLink”字段和“LinkTextLink”字段。