Javascript 如何从链接中提取href属性并创建该属性的特定模式?
我用两个例子来解释我的问题: 示例1: 当前字符串:Javascript 如何从链接中提取href属性并创建该属性的特定模式?,javascript,jquery,regex,url,Javascript,Jquery,Regex,Url,我用两个例子来解释我的问题: 示例1: 当前字符串: var str = 'anything <a href="www.google.com" target="_blank">untitled</a> anything'; // ^ link-name var str = 'anything <a href="www.google.com"
var str = 'anything <a href="www.google.com" target="_blank">untitled</a> anything';
// ^ link-name
var str = 'anything <a href="www.google.com" target="_blank">any thing else</a> anything';
// ^ link-name
示例2: 当前字符串:
var str = 'anything <a href="www.google.com" target="_blank">untitled</a> anything';
// ^ link-name
var str = 'anything <a href="www.google.com" target="_blank">any thing else</a> anything';
// ^ link-name
正如您在上面的两个示例中所看到的,
untitled
是一个关键字。我想如果链接名是无标题的,那么创建一个常规的URL,如果不是,那么创建一个基于模式的URL
注意:模式=[LinkName](LinkAddress)
我该怎么做
以下是我尝试过的:
var newStr = $('<div/>', {html: str}).find("a").replaceWith(function(){
return $(this).attr('href'); // this.href would give absolute path
}).end().text();
var newStr=$('',{html:str}).find(“a”).replaceWith(函数(){
return$(this.attr('href');//this.href将给出绝对路径
}).end().text();
我的代码从所有类型的链接创建一个常规URL。我如何才能将该条件(检查链接名是否未命名)添加到该条件中?我不明白。你所做的是对的。以下是您的解决方案,效果非常好:
$(函数(){
var str='任何东西';
var newStr=$('',{html:str}).find(“a”).replaceWith(函数(){
return($(this.text().trim().toLowerCase()=='untitled')?$(this.attr('href'):“[”+$(this.text()+“])(“+$(this.attr('href')+”)”);
}).end().text();
$(“正文”)。追加(newStr+“
”);
str=‘任何事’;
newStr=$('',{html:str}).find(“a”).replaceWith(函数(){
return($(this.text().trim().toLowerCase()=='untitled')?$(this.attr('href'):“[”+$(this.text()+“])(“+$(this.attr('href')+”)”);
}).end().text();
$(“正文”).append(newStr);
});代码>
您只需检查元素的文本内容:
var newStr = $('<div/>', {
html: str
}).find("a").replaceWith(function() {
var
href = this.getAttribute('href'),
text = this.textContent
;
return text === 'untitled'
? href
: "[" + text + "](" + href + ")";
}).end().text();
var newStr=$(“”{
html:str
}).find(“a”).replacetwith(函数(){
变量
href=this.getAttribute('href'),
text=this.textContent
;
返回文本==='untitled'
?href
:“[“+text+”](“+href+”);
}).end().text();
输入字符串是否总是这么短?我认为不是,这是很重要的。你想解析整个html文档来做这件事吗?@Rafałużynski Yes and no。。。!很抱歉因为你的答案不是解决办法。这是一个变通办法。您已经将我的两个示例实现为静态。。!但是我需要一个动态代码来调查每个字符串的链接名的值(是否为无标题关键字)。@Shafizadeh您能进一步解释一下吗?我对解决这个问题很感兴趣。我想要这样的东西:if(linkname=='untitled'){//regular URL}else{//patter-based-URL}
@Shafizadeh-Updated。请看上面的代码<代码>:)
看起来不错。但我不知道为什么在我的真实代码中不起作用。好吧,谢谢。我接受你的解决方案作为我的答案,如果我遇到关于它的问题,我会在以后问你。:-)
哦,还有一件事,作为咨询:我愿意使用这个。现在我在我的代码中使用它,就像。我想知道的是,我的密码很好?在函数中定义对象是否已优化?或者我可以做得更好*(事先)谢谢。@Shafizadeh不客气。你的代码没有问题,它的性能对我来说很好。但是,您也可以在函数外部初始化实例。这是一个相关的问题: