用数组中的值替换字符串中的特定字符

时间:2019-02-06 13:14:48

标签: javascript typescript replace

我正在构建一个Web应用程序,并从服务器获取一些描述。我得到的那些字符串有时在其中包含特定的字符,应将其替换为适当的值。 字符串的示例如下所示:

let str = 'Every next purchase provides you with additional %@ days 
of bonuses, up to %@ days.'

我需要用正确的值替换'%@'。获取这些值的最佳方法可能是数组,因为文本可能具有一个'%@'或更多。 我一直在考虑通过子字符串方法处理此问题,但是我不确定这是否是最好的方法。

值的示例可能类似于[2,5]。 然后结果应如下所示: 'Every next purchase provides you with additional 2 days of bonuses, up to 5 days.'

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

使用正则表达式和字符串的replace方法替换字符串中的字符。该过程完成后返回新字符串。

let str = 'Every next purchase provides you with additional %@ days'; 
let regex = /%@/gi;
console.log(str.replace(regex, 'yourvalue'));

这取决于您如何替换它,可以使用循环遍历并替换为具有相同值的数组值(而不是唯一值),这再次取决于您要实现的目标。

const str = 'Every next purchase provides you with additional %@ days %@';
const array = ['value1', 'value2'];
const count = (str.match(/%@/gi) || []).length;
const regex = /%@/;

let newString;

for (let i = 0; i < count; i++) {
  newString = i === 0 ? str.replace(regex, array[i]) : newString.replace(regex, array[i]);
  alert(newString);
}

关于substring():该方法从两个 SPECIFIC 索引之间的字符串中提取字符。由于您是从服务器获取数据,并且我相信它是动态数据,并且这些字符的索引可以更改,因此使用substring()可能无济于事。