【问题标题】:Chain replace for the same character appearing multiple times多次出现相同字符的链式替换
【发布时间】:2021-12-29 13:10:49
【问题描述】:

假设我有一个这样的字符串

丹尼是?詹姆斯是?艾伦是?

我想把它替换成

丹尼很棒,詹姆斯很棒,艾伦很棒

我如何使用replace 来做到这一点?

我正在尝试做类似的事情

string.replace(/\?/g, 'great ').replace(/\?/g, 'wonderful ').replace(/\?/g, 'magnificent');

但我只是得到:

丹尼很棒 詹姆斯很棒 艾伦很棒

如果情况是这样的:

丹尼是?詹姆斯是#艾伦是$

string.replace(/\?/g, 'great ').replace(/\#/g, 'wonderful ').replace(/\$/g, 'magnificent');

它会按预期工作,但由于它是同一个字符,所以它不起作用。

有没有比下面这样更简洁的方法来实现这一点?

string = string.replace(/\?/g, 'great ') 
string = string.replace(/\?/g, 'wonderful ')
string = string.replace(/\?/g, 'magnificent');

【问题讨论】:

  • 你为什么要使用“global”标志,而你显然不想要那个“global”标志?
  • ^ g 或全局标志替换正则表达式的所有实例,因此您需要将其删除以仅替换每次调用找到的第一个实例。

标签: javascript string replace


【解决方案1】:

您正在使用带有/g(意思是:“全局”)选项的正则表达式的替换函数,这意味着它将替换“?”字符串中的任何位置。

仅替换一次出现的 '?'一次,只需使用普通字符串查找,例如:string.replace('?', 'great')

因此,您的完整示例将是:

string = string.replace('?', 'great ') 
string = string.replace('?', 'wonderful ')
string = string.replace('?', 'magnificent');

【讨论】:

    猜你喜欢
    • 2015-04-27
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 2021-11-27
    • 2021-12-13
    • 2014-04-13
    相关资源
    最近更新 更多