Javascript:使用String.replacement()来替换/删除HTML锚
Javascript: using String.replace() to replace/remove HTML anchors
如果有一种方法可以用另一个简单字符串替换一个简单的字符串,我正试图完成一项非常简单的任务。
我有一个作为字符串的页面的HTML源代码。它包含几个内部锚点,例如<a href="#about">lt;a href="#contact">lt;a href="#top">lt;a href="#bottom">lt;a href="#我们是谁">,等
所有的锚都存储在一个数组中([‘about’,‘contact’],…),我需要删除每次出现的类似的字符串
href="#whatever"
(每次都有不同的东西),所以结果是<a>
我对简单的搜索和替换所做的是迭代我的数组,并替换每次出现的
'href="'+主播姓名+'"'
带有一个空字符串。但是在使用string.replaced()进行了多次尝试之后,我仍然没有找到实现这一点的方法。
换句话说(也在评论中发布):一个更简单的方式来提出我的问题是:
假设我的字符串包含以下三个字符串
<a href="#contact">lt;a href="#what">lt;a href="#more">
如何使用Javascript将它们(但不是任何具有相同模式的标签)替换为<a>
All of the anchors are stored in an array (['about','contact'],...), and I need to remove every occurance of a string like href="#whatever" (where whatever is each time something different) so that the result is
为此,你可以这样做:
var tets_array = $("a[href^='#']"); // select all a tags having href attr starting with #
然后获取数组并根据需要进行修改。
我不知道我是否理解这个问题,但你可以试试这个:
var index = myArray.indexOf('whatever');
myArray[index] = "whatever2"
一个特定的语句如下:
var mystring = '<a href="#thistag"> <a href="#thattag">';
var repstring = mystring;
var myarray = ['thistag', 'theothertag'];
for (var i = 0; i < myarray.length; i++) {
var reptag = myarray[i];
repstring = repstring.replace('a href="#' + reptag + '"', 'a');
}
则repstring
包含最后一个字符串。注意交替的单引号和双引号字符,以确保双引号作为HTML文本的一部分位于其通常的位置。显然,您可以更改reptag
(即myarray
的内容)以包含#
字符,此时您将更改mystring.replace(...)
行以匹配。
如果我理解正确,那么您可以使用正则表达式替换所有这些。
var tagString = '<a href="#contact"> <a href="#what"> <a href="#more">';
// Find every occurrence which starts with '#' and ends with '"'
var regEx = new RegExp('#.*?"', 'g');
// Replace those occurrences with '"' to remove them
tagString = tagString.replace(regEx, '"');
编辑:
要替换阵列中的特定标签,可以执行以下操作:
var tags = ['<a href="#a">', '<a href="#b">', '<a href="#c">'];
var tagsToReplace = ['a', 'c'];
for (var i = 0, len = tags.length; i < len; i++) {
var matches = tags[i].match(/#.*"/);
if (matches === null) {
continue;
}
var anchor = matches[0].substr(1).replace('"', ''); // Get only the anchor
if (tagsToReplace.indexOf(anchor) !== -1) {
tags[i] = tags[i].replace('#' + anchor, 'replaced');
}
}
感谢您的建议。我尝试了它们的各种变体,注意到有些可以在Firefox中使用,但不能在chrome中使用,这让我想到了这个线程
为什么不';javascript替换全局标志在Chrome或IE中是否有效,以及如何解决它?
这让我找到了解决方案:
for (var i=0; i < myTags.length ; i++)
{
var find = 'href="#' + myTags[i] + '"';
var regex = new RegExp(find, 'gi');
MyWholeString = MyWholeString.replace(regex, '');
}
- Javascript匹配以从URL中删除部分文件名-替换最后一次出现的内容
- 可以't删除“;C: fakepath "使用javascript替换和regex
- 如何删除重复的选定项目并替换为数量
- 使用替换函数删除 Javascript 中元素的类
- 使用正则表达式删除所有 html 属性(替换)
- jQuery:裁剪以删除图像数据并替换为新数据
- 如何将删除标记替换为输入类型文本
- 为什么javascript替换方法(没有regex)在angularjs表达式中不起作用来删除 
- 为什么不用特殊字符替换选择文本,以及如何删除此特殊字符
- 使用Javascript替换函数从字符串中删除€Symbol
- Chained或Dependent选择Zend_Form jQuery以删除或替换表单元素
- 如何使用jquery删除和替换select选项
- 拼接数组的Javascript只是替换值而不是删除它
- 替换/删除数组中的空条目
- 正则表达式 - 替换方法从字符串中删除运算符产生不希望的结果
- 替换/删除两个字符之间的所有内容
- 字符串替换或通过数组删除
- 在 JavaScript 中使用替换删除注释
- Javascript:使用String.replacement()来替换/删除HTML锚
- jQuery替换/删除没有id或标记的属性