-1

次のような文字列があります。

"My favorite color is {color:tan}."

トークンのすべての出現を渡す色に置き換えるJavaScript関数を作成する方法を見つけようとしていますが、文字列が長すぎる場合はデフォルトで「tan」になります。

例えば

var string = "My favorite color is {color:tan}.";
var favoriteColor = "red"; 
var maxLength = 25;
var tokenPrefix = "color"
var result = replaceToken(string, favoriteColor, maxLength, tokenPrefix);

"My favorite color is red."文字列の長さが 25 文字であるため、 "result" は と等しくなるはずです。

しかし、 を設定favoriteColor = "purple"すると、結果は と等しくなるはず"My favorite color is tan."です。これは、「紫」という単語によって文字列が 25 文字より長くなるためです。

私は正規表現に詳しくないので、これが正規表現で可能かどうかはわかりませんが、indexOf() を使用してトークンを見つけようとしましたが、複数のインスタンスがある可能性があります。replaceAll() も試してみましたが、単純な文字列ではないため、うまくいきません。

4

1 に答える 1

1

これを最適化する方法は間違いなくありますが、簡単な方法として、以下にその方法の例を示します。

replaceToken(string, favoriteColor, maxLength) {
  tokens = string.match(/{(.*?)}/)
  color = tokens[1].split(':')[1]
  if (favoriteColor.length < maxLength) string = string.replace(tokens[0], favoriteColor)
  else string = string.replace(tokens[0], color)
  return string
}
于 2013-11-04T23:22:32.443 に答える