Замена переменных в строке значениями - PullRequest
0 голосов
/ 30 апреля 2020

У меня есть строка вроде:

const message = "Are you sure you want to delete the user {username} ?";

И у меня есть объект с пользовательскими свойствами, такими как: -

const user = {
  id: 1,
  username: 'ABC',
  age: 34
};

Так как я могу заменить имя пользователя в строке фактическим значение?

Ответы [ 4 ]

1 голос
/ 30 апреля 2020

Этот подход немного отличается от того, что было до сих пор:

const placeholderRegex = /\{(\w+?)}/g;

function populateTemplate(string, placeholders) {
  return string.replace(placeholderRegex, (_, name) => placeholders[name]);
}

const message = populateTemplate(
  "Are you sure you want to delete the user {username} ?", 
  user);
1 голос
/ 30 апреля 2020

applyTemplate функция будет l oop через предоставленные ключи объекта.

Если {key} присутствует в вашем сообщении, то оно будет заменено глобально.

function applyTemplate ( message, obj ) {
    for ( const key in obj ) {
      const lookup = new RegExp (`{${key}}`, 'g' );
      const value = obj[key];
      if ( lookup.test ( message ) ) {
          message = message.replace ( lookup, value)
      }
    }
    return message;
}

let mes = applyTemplate ( message, user );
console.log ( mes );
0 голосов
/ 30 апреля 2020

Так как я видел регулярное выражение в качестве тега, я предполагаю, что вы хотите решить это с помощью регулярного выражения, и что строка является динамической c. Вы можете сделать это следующим образом:

const regex = /\{username\}/
const msg = "Are you sure you want to delete the user {username} ?"

replacedContent = msg.replace(regex, user.username)

Сначала я определяю регулярное выражение, совпадающее с существующим именем пользователя, после чего я заменяю вхождение этого совпадения новым user.username. Regex делает все волхвы c:)

Надеюсь, это поможет!

0 голосов
/ 30 апреля 2020

1) Вы можете изменить qoutes с '' на ``. а затем используйте ваше поле obj.field, например, как user.username. Внутри qoutes используйте такую ​​конструкцию и поместите obj.field внутри $ {}. $ {user.username} Таким образом, вся конструкция будет выглядеть следующим образом: const message = Are you sure you want to delete the user ${user.username} ?;

2) или другой способ - использовать этот тип '' (или "") qoutes и использовать + символ const message = 'Вы уверены, что хотите удалить' + user.username + '?';

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