广泛搜索以回答我的问题,但一切似乎都很复杂。 我是Javascript的新手,我想帮助解决这个问题,而不是有人回答它(如果你觉得需要直接回答,分解会很棒)。
我有一个从HTML文本区域引入字符串的函数。我需要在字符串中搜索任何链接,因此,搜索“www”。或者是“http://”。然后我需要循环遍历该部分,直到链接结束(或出现空格)。这需要保存为变量,然后需要将"<a href = newVar>"
放在开头,然后再放入新变量,然后以</a>
标记结束。
字符串中可能有很多URL。
我必须将此作为for循环。
我有一个起始代码,但我超级卡住了! 非常感谢任何帮助!
//Checking for URL's in the message string
function checkLink(text)
{
for (var i=0; i == text.length; i++)
{
var currentChar = text.charAt(i);
if(text.charAt(i) == "w" && text.charAt(i+1) == "w" && text.charAt(i + 2) == "w" && text.charAt(i + 3) == ".")
{
//Not to sure what to do here
}
}
}
答案 0 :(得分:2)
正则表达式是目前最好的方法。但是,由于这是出于教育目的,这里是一种在字符串中查找URL的方法。这不是一个正确的答案,但显示了概念。
假设您有以下文字:
Lorem ipsum dolor坐下来,精神上的精神。 Duis faucibus dui nec est auctor auctor。 Nullam vulputate,augue non auctor rhoncus, urna urna tempus velit,non tincidunt nibh orci et elit。整数sed nibh massa,eget vestibulum velit。 www.Nulla.com在精简中 massa egestas accumsan ac semper nisl。在urna的Curabitur viverra lorem porttitor amet aliquam sapien http://imperdiet.org。 Pellentesque ultricies sagittis malesuada。 Mauris lobortis aliquam felis坐下来 前庭。简历faucibus lectus。 Donec consectetur ante nisi。 Lorem ipsum dolor坐下来,精致的adipistur elit。 Suspendisse 势的。
那里有两个链接。代码看起来像这样。
以某种方式获取变量中的文本,我们称之为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];
我们检查这个'word'的开头(在这个上下文中是指由空格分隔的每个文本部分)是否包含我们的前缀。实际上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坐下来,精神上的精神。 Duis faucibus dui nec est auctor auctor。 Nullam vulputate,augue non auctor rhoncus, urna urna tempus velit,non tincidunt nibh orci et elit。整数sed nibh massa,eget vestibulum velit。 A LINK精英 简历massa egestas accumsan ac semper nisl。 Curabitur viverra lorem in urna porttitor sit amet aliquam sapien A LINK Pellentesque ultricies sagittis malesuada。 Mauris lobortis aliquam felis坐在前庭。简历 faucibus lectus。 Donec consectetur ante nisi。 Lorem ipsum dolor坐 amet,consectetur adipiscing elit。 Suspendisse的潜力。
注意一个问题?分裂技术看到'http://imperdiet.org。作为网址。用户的意思是让“http://imperdiet.org”成为网址,并在其后有一段时间。正则表达式也允许您避免这种情况。
该演示包含所有代码,但没有我的评论。
如果您想了解正则表达式,我建议this site。