【问题标题】:How to replace part of text but not touching anything else如何替换部分文本但不触及其他任何内容
【发布时间】:2021-09-14 15:56:10
【问题描述】:

我正在尝试编辑 YouTube 频道页面上的一些文本,并且我想减少订阅者数量中的订阅者部分。 (例如 256 个订阅者 ----> 256)。我是编程的菜鸟(尤其是 JS),还没有找到任何适合我想要的答案。我有一个小的 HTML 元素,我想用 JavaScript 编辑它以修剪订阅者部分而不触及数字。 <yt-formatted-string id="subscriber-count" class="style-scope ytd-c4-tabbed-header-renderer" aria-label="2.24 million subscribers">2.24M subscribers</yt-formatted-string> 我试过这个:var get=document.getElementById('test'); var str=get.innerHTML; document.write(str.replace("Rindan's","TestNAme")); 但它反而删除了整个页面并留下了没有订阅者字符串的号码,所以半成功。谁能帮我让它可靠地工作?抱歉,奇怪的格式,stackoverflow 的文本编辑器不是很好。

【问题讨论】:

  • "但它反而删除了整个页面" 这就是document.write 所做的。

标签: javascript string text replace


【解决方案1】:

检查此代码。它将用空字符串替换订阅者单词。然后用新字符串更新 innerHTML。

document.write() 将写入整个文档并替换整页。

var elem=document.getElementById('subscriber-count'); 
var str=elem.innerHTML; 
elem.innerHTML = str.replace("subscribers","");
<yt-formatted-string id="subscriber-count" class="style-scope ytd-c4-tabbed-header-renderer" aria-label="2.24 million subscribers">2.24M subscribers</yt-formatted-string>

【讨论】:

    【解决方案2】:

    如果我对您的理解正确,您正在寻找“256 个订阅者”的方法,并留下 256 个数字格式。

    您可以使用正则表达式将任何不是数字的内容替换为空字符串,然后使用 parseInt 进行转换,如下所示:

    const str = "256 subscribers";
    const numberStr = str.replace(/[^0-9]/g, "");
    const number = parseInt(numberStr);
    console.log(number); // 256
    

    【讨论】:

      【解决方案3】:

      你可以只设置元素的innerHtml而不写document

        var get=document.getElementById('subscriber-count'); 
        var str=get.innerHTML; 
        get.innerHTML = str.replaceAll("subscribers","");
      

      类似https://codepen.io/mikhail-vnukov/pen/QWvbeeW

      【讨论】:

        猜你喜欢
        • 2012-08-13
        • 2011-11-10
        • 1970-01-01
        • 1970-01-01
        • 2020-12-04
        • 1970-01-01
        • 2023-03-09
        • 2021-12-18
        • 2020-11-20
        相关资源
        最近更新 更多