【问题标题】:How to replace multi-words with a single word in typescript?如何用打字稿中的单个单词替换多个单词?
【发布时间】:2020-12-06 19:53:24
【问题描述】:

我想用一个单词替换单个字符串中的多个单词。我试过了,但只有第一个词被替换了。

这里是代码。

function addReplacement(text: string): string 
{
  return text.replace(/\bdrink\b/g || /\btea\b/g ,'****')
}

输入字符串:I like to drink a cup of tea.

输出:I like to **** a cup of tea.

我想要的是:I like to **** a cup of ****.

如何做到这一点?请帮忙。

【问题讨论】:

  • 您正在申请“||”运算符到两个正则表达式,这肯定不会产生正则表达式。

标签: javascript regex typescript


【解决方案1】:

|| 运算符只会返回左侧,因为正则表达式是 javascript 中的真值。 || 运算符用于对布尔值进行操作。

你想要的是一个匹配单词边界的正则表达式,然后是饮料或茶,然后是另一个单词边界。可以这样输入:

function addReplacement(text: string): string {
  return text.replace(/\b(drink|tea)\b/g ,'****')
}

正则表达式中的括号是一个组,| 是 OR 运算符。

Playground Link

【讨论】:

  • 这对这个文本很有效I like to drink a cup of tea.
  • 但不适用于此Iliketodrinkacupoftea. 解决此问题的方法是什么?
  • @JamshaidAlamDJ 删除单词边界,(\b)
【解决方案2】:

你也可以使用双重替换而不是双重管道!

function addReplacement(text: string): string 
{
  return text.replace(/\bdrink\b/g ,'****').replace(/\btea\b/g ,'****')
}

【讨论】:

    【解决方案3】:

    一个工作版本是

    text.replace(/\s[drink|tea]\s/g ,'****')
    

    【讨论】:

    • 如果它不适合你,你需要向我们展示“文本”的内容。
    【解决方案4】:

    问题出在你的正则表达式中,你想在正则表达式中使用 or |,而不是传递“一个或另一个正则表达式”

    text.replace(/\b(drink|tea)\b/g,'****')
    

    【讨论】:

    • 对不起,我有一个错字,已修正!你能再试一次吗
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    相关资源
    最近更新 更多