javascript删除特定字符前的字符串
我一直在寻找,但只能找到我的问题的变化 我需要删除字符前的字符串(包括字符以及字符前后的空格)。字符串每次都会不同,而且不可预测,因此无论它是什么,都需要从DOM中删除它。因此,如果这是输出:javascript删除特定字符前的字符串,javascript,string,Javascript,String,我一直在寻找,但只能找到我的问题的变化 我需要删除字符前的字符串(包括字符以及字符前后的空格)。字符串每次都会不同,而且不可预测,因此无论它是什么,都需要从DOM中删除它。因此,如果这是输出: <h2>Birds - Norwegian Yellow Finch</h2> <h2>Cats - Domestic Shorthaired Tabby</h2> <h2>Dogs - Alaskan Husky Cross</h2>
<h2>Birds - Norwegian Yellow Finch</h2>
<h2>Cats - Domestic Shorthaired Tabby</h2>
<h2>Dogs - Alaskan Husky Cross</h2>
鸟类-挪威黄雀
猫-家养短毛斑猫
狗-阿拉斯加哈士奇十字
如何删除“鸟、猫、狗”?不要对这些词(鸟、猫、狗)太过具体,因为它们会改变。如果需要,破折号(-)可以是不同的字符(即:*。这里有一个不使用正则表达式的解决方案: 下面是一个使用正则表达式的示例,根据您的数据,它可能更有用,也可能不更有用:
两者都使用jQuery,但应该直接更改为纯JavaScript。您可以使用一个简单的
RegExp
来解决这个问题
HTML:
<h2>Birds - Norwegian Yellow Finch</h2>
<h2>Cats - Domestic Shorthaired Tabby</h2>
<h2>Dogs - Alaskan Husky Cross</h2>
var re = /^[^-]+-\s*/;
function processText(el) {
el.textContent = el.textContent.replace(re, '');
}
var elements = document.getElementsByTagName('h2');
for(var i = 0, l = elements.length; i < l; i++) {
processText(elements[i]);
}
鸟类-挪威黄雀
猫-家养短毛斑猫
狗-阿拉斯加哈士奇十字
JavaScript:
<h2>Birds - Norwegian Yellow Finch</h2>
<h2>Cats - Domestic Shorthaired Tabby</h2>
<h2>Dogs - Alaskan Husky Cross</h2>
var re = /^[^-]+-\s*/;
function processText(el) {
el.textContent = el.textContent.replace(re, '');
}
var elements = document.getElementsByTagName('h2');
for(var i = 0, l = elements.length; i < l; i++) {
processText(elements[i]);
}
var re=/^[^-]+-\s*/;
函数processText(el){
el.textContent=el.textContent.replace(re.);
}
变量元素=document.getElementsByTagName('h2');
for(var i=0,l=elements.length;i
以下循环遍历所有h2元素,并通过正则表达式替换删除开头:
window.onload = function() {
var h2s = document.getElementsByTagName("h2"),
i;
for (i=0; i < h2s.length; i++)
h2s[i].innerHTML = h2s[i].innerHTML.replace(/^[^-]+ - /,"");
};
演示:
如果将函数传递给.text()
jQuery将为每个元素调用该函数,并将元素的旧(当前)值传递给它,因此不需要.each()
循环
(同样,如果将代码放在正文末尾的脚本块中,则不需要文档就绪处理程序。)谢谢。我应该提到,字符串有时可能不止一个单词。这是一个容易的调整吗?在“onload处理程序”中会是什么样子?(这里是javascript初学者)我更新了我的答案,展示了一种编写
onload
处理程序的方法,并进一步解释了为什么需要它。此外,我稍微调整了正则表达式,使其在连字符之前可以处理多个单词(请注意,其他一些答案可能已经处理了这种可能性)。演示也更新了。再次感谢。我已经把你的代码包好了,什么也没发生。现在感觉自己像一个超级面条:(我错过了什么?我不知道你错过了什么。我想也许我有打字错误或什么的,但是从我的答案复制粘贴到JSFIDLE中使用了
标记在这里:如果你放一些简单的东西,比如警报(“测试”);
它能工作吗?好吧,多奇怪。这是有效的(从您最新的演示中复制):var h2s=document.getElementsByTagName(“h2”),i;for(i=0;i
但不是这个(来自早期演示):var h2s=document.getElementsByTagName(“h2”),i;for(i=0;i我看不出有什么不同。谢谢。在页面加载时立即进行调整是否容易?您的演示显示“运行它”这很好…但我是一个javascript初学者,不知道如何让它自己运行。直接执行onclick
处理程序的主体。我现在也看到,您的代码允许轻松更改要应用函数的元素(一个地方更改“h2”)。谢谢。我喜欢Jquery选项,因为多年来我使用了很多插件,所以语法比较熟悉。我需要在上面使用它的页面实际上已经加载了Jquery库。您的示例非常完美,因为有时候会有多个单词,而且可能会出现第二个单词d dash。但是我已经把你的代码打包好了,什么也没发生。现在感觉自己像个超级傻瓜:(我缺少什么?(我也加载了jquery库)你可能需要确保它在页面加载完成后运行。所以你应该做$(document)。ready(function(){//code here})
对于这个初学者来说仍然不起作用。以下是我的建议:你错过了函数的结尾部分。
使用正确的缩进来捕捉这些东西,并查看Chrome/Firefox中的JavaScript控制台来找出问题所在。这是一个固定的解决方案(还需要将其设置为使用jQuery):
$(document).ready(function(){
$("h2").text(function(i, oldVal) {
return oldVal.replace(/^[^-]+ - /,"");
});
});