【问题标题】:How to change word to be uppercase in string and keep the rest? [duplicate]如何在字符串中将单词更改为大写并保留其余部分? [复制]
【发布时间】:2019-12-27 16:51:54
【问题描述】:

如何将字符串中的单词改为大写?

例如我有这个字符串:\u001b[31merror\u001b[39m,如果存在error这个词,那么我想让她大写,所以输出应该是:\u001b[31mERROR\u001b[39m。

为什么当我使用正则表达式时它不起作用? \u001b[31merror\u001b[39m.replace( /(error)/, "$1".toUpperCase())

error 可以是任何小写单词

【问题讨论】:

    标签: javascript node.js


    【解决方案1】:

    使用这个

    '\u001b[31merror\u001b[39m'.replace(/(error)/, RegExp.$1.toUpperCase())
    

    这将替换字符串'error'并将其更改为'ERROR'

    【讨论】:

    • 谢谢,但这个词可以是错误、信息等任何东西……错误只是示例
    • 我已经更新了答案。
    • 它没有按照要求替换任何小写单词,但只有错误
    • @mplungjan 用户要求他替换一个特定的小写单词。他必须指定要替换的单词,因为字符串可能包含多个小写单词。
    • 谢谢,但是这个词可以是错误、信息……错误只是示例
    【解决方案2】:

    它不起作用,因为toUpperCase() 应用于字符串“$1”,然后我将该操作的结果作为replace 方法的第二个参数传递;相反,您希望找到 toUpperCase 并调用 value。为此,您需要传递一个函数作为replace 的第二个参数:

    "\u001b[31merror\u001b[39m".replace(/(error)/, $1 => $1.toUpperCase())
    

    这会起作用(注意,$1 这里只是一个任意变量名,你可以随意调用它)。

    但是,既然你说error 只是一个例子,你可以列出所有可能的值:

    mystring.replace(/(error|info|warning)/, $1 => $1.toUpperCase())
    

    或者只是替换 \u001b[31m 和 \u001b[39m 之间的所有内容(假设它们没有改变):

    const mystring = `\u001b[31merror\u001b[39m`;
    console.log(
      mystring.replace(/\u001b\[31m(.*)\u001b\[39m/, $1 => $1.toUpperCase())
    );

    希望对你有帮助。

    【讨论】:

    • 是的!感谢您的解释和解决方案!
    猜你喜欢
    • 2021-09-04
    • 2014-11-28
    • 2017-01-04
    • 2021-07-04
    • 1970-01-01
    • 2020-12-10
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多