【问题标题】:Replacing word in a string with another string - Javascript用另一个字符串替换字符串中的单词 - Javascript
【发布时间】:2023-04-03 19:32:01
【问题描述】:

有谁知道任何正则表达式,我可以用另一个字符串替换字符串中的单词?

var replacement = "car";
var toReplace = "boat";
var str = "banana boats or boat"
str = str.replace(toReplace, replacement);

我希望 str 等于“香蕉船或汽车”而不是“香蕉汽车或汽车”

有什么建议吗?

【问题讨论】:

  • str 已经等于 'banana boats or boat'
  • 你的问题是只有第一次出现会被String-prototype.replace替换吗?
  • str.replace(new RegExp(toReplace, "g"), replacement)

标签: javascript replace str-replace


【解决方案1】:

您可以使用单词边界\b 仅替换整个单词,而不是用所需单词替换新创建的正则表达式中的单词部分。

var replacement = "car",
    toReplace = "boat",
    str = "banana boats or boat";
    
str = str.replace(new RegExp('\\b' + toReplace + '\\b', 'g'), replacement);

console.log(str);

【讨论】:

  • 如果你想替换多个单词,你可以添加一个全局标志 'g' 作为正则表达式 cosntructor 的第二个参数。
【解决方案2】:

您需要global 标志才能进行多个匹配。所以将其作为替换正则表达式传递:

new RegExp(toReplace, "g")

【讨论】:

    【解决方案3】:

    replace 仅替换str 中搜索字符串toReplace第一个 实例。

    要替换strtoReplace所有 个实例,请使用RegEx 对象和g(全局)标志以及toReplace 作为搜索字符串:

    var replacement = "car";
    var toReplace = "boat";
    var str = "banana boats or boat";
    
    var toReplaceRegex = new RegExp(toReplace, "g");
    str = str.replace(toReplaceRegex, replacement); 
    console.log(str); // prints "banana cars or car"

    【讨论】:

      【解决方案4】:

      您的问题不清楚,因为 str 在您更改之前已经默认等于“香蕉船或船”! ...但如果你坚持,你可以这样做

      var replacement = "car"; 
      var toReplace = "boat"; 
      var str = "banana boats or boat" 
      str = str.replace(replacement, toReplace);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-02-21
        • 2019-05-14
        • 2020-09-01
        • 1970-01-01
        • 2013-12-03
        • 2021-06-15
        • 2014-01-04
        相关资源
        最近更新 更多