Заменить определенные символы в строке на значения из массива - PullRequest
0 голосов
/ 06 февраля 2019

Я создаю веб-приложение и получаю некоторые описания с сервера.Те строки, которые я получаю, иногда включают в себя определенные символы, которые должны быть заменены правильными значениями.Пример строки выглядит следующим образом:

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 голосов
/ 06 февраля 2019

Используйте регулярное выражение и метод замены строки, чтобы заменить символ (ы) в строке.Он возвращает новую строку после процесса.

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() может не помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...