gpt4 book ai didi

javascript - 在javascript中替换字符串中的字符

转载 作者:行者123 更新时间:2023-11-30 09:39:55 25 4
gpt4 key购买 nike

我正在尝试用 & 替换“Sydney & Melbourne”中的 &。但它不起作用。

我尝试了以下几种不同的方法:

  • 使用 for 循环和 if 语句:

    for(var i=0; i<str.length; i++){
    if(str[i]==="&"){
    str[i]="&amp;";
    }
  • 用正则表达式替换:

    var myRegExp = /\b&\b/;

    str = str.replace(myRegExp,"&amp;");
    return str;

我确实知道 && 是相同的东西,所以结果可能是 & (实际上是当我在这里写它时发生堆栈溢出)。但有解决办法吗?

最佳答案

你的第一次尝试

with for loop and if statement:

for(var i=0; i<str.length; i++){
if(str[i]==="&"){
str[i]="&amp;";
}
}

这当然行不通。 JS 字符串是 immutable , 这意味着

Once a string is created, it is not possible to modify it

它不会导致运行时错误,但它不会执行任何操作。 (即使 JS 字符串不是不可变的,你也不能用多个字符替换一个字符。)

你的第二次尝试

with regex and replace:

var myRegExp = /\b&\b/;

str = str.replace(myRegExp,"&amp;");
return str;

这当然行不通。空格和&符号之间没有单词边界。参见 word boundary 的定义:

A word boundary matches the position where a word character is not followed or preceded by another word-character.

其中“单词字符”相当于[a-zA-Z0-9_] .

但为什么呢?

但是,真正的问题是您为什么要这样做。如果你只是想将这个字符串作为文本插入到 DOM 中,那么使用 textContent 来实现。 :

document.getElementById("city").textContent = "Sydney & Melbourne";

(而不是使用 innerHTML )。在 jQuery 中,如果您碰巧使用它,请使用 text()而不是 html() .这种方法的优点是不会与字符串中的其他 HTML 字符混淆,特别是 <。 .

如果您的问题与 & 有关在 URL 中,您不应该对其进行 HTML 转义——您应该对其进行 URI 编码,但您可能已经知道这一点。

如果您的问题是您将其传递给需要正确编码的 HTML 字符串的服务器,那么您应该重新考虑您的 API 设计。一般来说,最好将原始字符串存储在服务器上,并在必要时对它们进行解码/编码/转义/取消转义——请记住,服务器数据可能会在浏览器以外的上下文中显示。如果您绝对想向服务器发送正确的 HTML 转义字符串,那么您需要担心的不仅仅是 &。 , 还有其他特殊的 HTML 字符。为此,您应该使用您最喜欢的库或标准库中可能提供的一些实用程序:

function htmlEscape(str) {
var div = document.createElement('div');
div.textContent = str;
return div.innerHTML;
}

关于javascript - 在javascript中替换字符串中的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41627901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com