javascript删除特定字符前的字符串

标签 javascript string

我一直在寻找,但只能找到我的问题的变体...

我需要删除字符前的字符串(包括字符,以及字符前后的空格)。该字符串每次都会不同且不可预测,因此无论它是什么都需要从 DOM 中删除。所以,如果这是输出:

<h2>Birds - Norwegian Yellow Finch</h2>
<h2>Cats - Domestic Shorthaired Tabby</h2>
<h2>Dogs - Alaskan Husky Cross</h2>

如何删除“Birds - , Cats - , Dogs - ”?无需具体说明这些词(鸟、猫、狗),因为它们会发生变化。如果需要,破折号 (-) 可以是不同的字符(即:*)。

最佳答案

以下循环遍历所有 h2 元素并通过正则表达式替换删除开头:

window.onload = function() {
    var h2s = document.getElementsByTagName("h2"),
        i;

    for (i=0; i < h2s.length; i++)
        h2s[i].innerHTML = h2s[i].innerHTML.replace(/^[^-]+ - /,"");​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​
};

演示:http://jsfiddle.net/nGfYd/5/

onload handler 确保代码在页面加载完成后运行,因为 JavaScript 是在解析页面时遇到它时执行的,但它只能操作已经解析过的元素。你不需要 onload处理程序,如果您在脚本 block 中将代码包含在相关元素之后,实际上我更喜欢将 <script> 放在在结束前在正文末尾阻止 </body>标记而不使用 onload处理程序。

编辑:从其他答案下的评论来看,您似乎很乐意使用 jQuery,在这种情况下您可以这样做:

$(document).ready(function(){
    $("h2").text(function(i, oldVal) {
        return oldVal.replace(/^[^-]+ - /,"");
    });
});

演示:http://jsfiddle.net/nGfYd/7/

如果将函数传递给 .text() jQuery 将为每个元素调用该函数,将元素的旧(当前)值传递给它,因此您不需要 .each()。也循环。

(同样,如果将代码放在正文末尾的脚本 block 中,则不需要文档就绪处理程序。)

关于javascript删除特定字符前的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13537830/

相关文章:

javascript - 使用 HERE Map api 自动完成地址字段

javascript - 下载我在html中选择的文件

javascript - 在 iPad 上以全屏模式自动关闭视频

c - 从 STDIN 读取一行以仅使用 C 提取数字标记

php - 使用php获取字符串的一部分

c - 在c中使用指针操作char数组

JavaScript:从非连续的现有数组元素创建新数组

javascript - 谷歌地图平移地球的 'edge'

c# - 在c#中获取字符串之间的字符串

Python 二进制转十六进制