我有一个看起来像这样的字符串:
"My favorite color is {color:tan}."
我正在试图弄清楚如何编写一个javascript函数,用我传入的任何颜色替换所有出现的令牌,但如果String太长则默认为“tan”。
E.g。
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个字符。
但如果我设置favoriteColor = "purple"
,那么结果应该等于"My favorite color is tan."
,因为“紫色”这个词会导致字符串超过25个字符。
我不熟悉正则表达式,所以我不确定这是否可以在正则表达式中使用,但我尝试使用indexOf()来查找令牌,但可能有多个实例。我也尝试过replaceAll(),但因为它不是一个简单的字符串,所以它不会真正起作用。
答案 0 :(得分: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
}