到目前为止,正则表达式是最好的方法。但是,由于这是出于教育目的,这里有一种在字符串中查找 URL 的方法。这不是一个正确的答案,但显示了概念。
假设您有以下文本:
Lorem ipsum dolor sit amet, consectetur adipiscing elit。Duis faucibus dui nec est auctor 。Nullam vulputate,augue non auctor rhoncus,urna urna tempus velit,non tincidunt nibh orci et elit。整数 sed nibh massa,eget 前庭 velit。www.Nulla.com in elit vitae massa egestas accumsan ac semper nisl。Curabitur viverra lorem 在 urna porttitor 坐 amet aliquam sapien http://imperdiet.org。Pellentesque ultricies sagittis malesuada。Mauris lobortis aliquam felis 坐在前庭。在 vitae faucibus lectus 中。Donec consectetur ante nisi。Lorem ipsum dolor sit amet, consectetur adipiscing elit。暂停潜力。
里面有两个链接。代码看起来像这样。
以某种方式获取变量中的文本,我们将其称为text
.
var text = '<that text above>';
现在我们将文本拆分为一个名为words
.
var words = text.split(' ');
我们将在这个例子中产生新的输出,所以我们需要一个字符串变量来保存它。
var new_text = '';
您似乎了解循环,但这正是大多数循环通过数组的样子。
for (var i=0; i < words.length; i++) {
var word = words[i];
我们检查这个“单词”的开头(在这种情况下,它指的是由空格分隔的每个文本部分)是否包含我们的任何一个前缀。实际上 bit.ly 是一个有效的 URL。正则表达式比我们更好地处理这个问题。
if (word.indexOf('http://') === 0 || word.indexOf('www.') === 0) {
我们通过放置链接语法来更改单词的值。我使用 Markdown,但你可以做 HTML,或者任何你喜欢的东西。
word = '[A LINK]' + '(' + word + ')';
}
这是我们在脚本顶部讨论的输出。只是继续在上面添加东西,不管它们是否被修改。问题是我们的单词后面可能有 1 或 94 个空格,但我们总是放回一个。正则表达式具有更好地处理这个问题的功能。
new_text += word + ' ';
}
new_text
现在看起来像这样。
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Duis faucibus dui nec est auctor auctor. Nullam vulputate, augue
non auctor rhoncus, urna urna tempus velit, non tincidunt nibh
orci et elit. Integer sed nibh massa, eget vestibulum
velit. [A LINK](www.Nulla.com) in elit vitae massa egestas
accumsan ac semper nisl. Curabitur viverra lorem in urna
porttitor sit amet aliquam sapien [A LINK](http://imperdiet.org.)
Pellentesque ultricies sagittis malesuada. Mauris lobortis aliquam
felis sit amet vestibulum. In vitae faucibus lectus. Donec
consectetur ante nisi. Lorem ipsum dolor sit amet,
consectetur adipiscing elit. Suspendisse potenti.
在堆栈溢出时,如下所示:
Lorem ipsum dolor sit amet, consectetur adipiscing elit。Duis faucibus dui nec est auctor 。Nullam vulputate,augue non auctor rhoncus,urna urna tempus velit,non tincidunt nibh orci et elit。整数 sed nibh massa,eget 前庭 velit。elit vitae massa egestas accumsan ac semper nisl 中的链接。Curabitur viverra lorem 在 urna porttitor 坐 amet aliquam sapien A LINK Pellentesque ultricies sagittis malesuada。Mauris lobortis aliquam felis 坐在前庭。在 vitae faucibus lectus 中。Donec consectetur ante nisi。Lorem ipsum dolor sit amet, consectetur adipiscing elit。暂停潜力。
注意到问题了吗?分裂技术看到' http://imperdiet.org '。作为网址。用户的意思是让 ' http://imperdiet.org ' 成为 url,并在它之后有一个句点。正则表达式还允许您避免这种情况。
该演示包含所有代码,中间没有我的评论。
如果你想了解正则表达式,我推荐这个网站。