1. ホーム
  2. javascript

[解決済み] JavascriptでRengexのキャプチャグループを大文字に置き換える

2023-01-27 14:57:11

質問

JavaScriptでキャプチャグループを大文字に置き換える方法を知りたいです。以下は、私がこれまで試したもののうち、うまくいっていないものの簡略版です。

> a="foobar"
'foobar'
> a.replace( /(f)/, "$1".toUpperCase() )
'foobar'
> a.replace( /(f)/, String.prototype.toUpperCase.apply("$1") )
'foobar'

このコードのどこが問題なのか説明してください。

どのように解決するのですか?

関数を replace .

var r = a.replace(/(f)/, function(v) { return v.toUpperCase(); });

説明

a.replace( /(f)/, "$1".toUpperCase())

この例では、replace関数に文字列を渡しています。特別な置換構文を使っているので ($N は N 番目のキャプチャを取得) を使っているので、単に同じ値を与えているだけです。また toUpperCase は、置換文字列を大文字にしているだけなので、実際には欺瞞的です。 を大文字にしているだけだからです (これはやや無意味です。 $ と1つの 1 の文字には大文字と小文字がないので、返り値はやはり "$1" ) .

a.replace( /(f)/, String.prototype.toUpperCase.apply("$1"))

信じられないかもしれませんが、この式のセマンティクスは全く同じです。