8

Интерполяция строк в JavaScript?

11

Рассмотрите следующий код:

var age = 3;

console.log("Мне " + age + " года!");

Существует ли способ вставить значение переменной в строку, помимо конкатенации строк?

5 ответ(ов)

0

Предостережение: избегайте любых систем шаблонов, которые не позволяют экранировать их собственные разделители. Например, вы не сможете вывести следующее с помощью метода supplant(), упомянутого здесь.

"Мне 3 года благодаря моей переменной ."

Простая интерполяция может подойти для небольших самодостаточных скриптов, но часто имеет этот недостаток в дизайне, который ограничивает серьезное использование. Лично я предпочитаю шаблоны DOM, например:

<div> Мне <span id="age"></span> лет!</div>

И использую манипуляции с jQuery: $('#age').text(3)

В качестве альтернативы, если вы просто устали от конкатенации строк, всегда можно использовать альтернативный синтаксис:

var age = 3;
var str = ["Мне только", age, "лет"].join(" ");
0

Я использую этот шаблон во многих языках, когда не знаю, как сделать это правильно, и просто хочу быстро зафиксировать идею:

// JavaScript
let stringValue = 'Привет, меня зовут {name}. Вы {action} моего {relation}.'
    .replace(/{name}/g    ,'Иниго Монтойя')
    .replace(/{action}/g  ,'убили')
    .replace(/{relation}/g,'отца')
    ;

Хотя это и не самый эффективный способ, мне кажется, что он читаем. Он всегда работает и всегда доступен:

' VBScript
dim template = "Привет, меня зовут {name}. Вы {action} моего {relation}."
dim stringValue = template
stringValue = replace(stringValue, "{name}"    ,"Люка Скайуокера")     
stringValue = replace(stringValue, "{relation}","Отца")     
stringValue = replace(stringValue, "{action}"  ,"являетесь")

ВСЕГДА

* COBOL
INSPECT stringValue REPLACING FIRST '{name}'     BY 'Матерь Гренделя'
INSPECT stringValue REPLACING FIRST '{relation}' BY 'Сын плеча'
INSPECT stringValue REPLACING FIRST '{action}'   BY 'нанесла смертельную рану.'

UPDATE:

Я думал, что это самоочевидно, но мне стало ясно, что это не так. Вы можете применить это в любой ситуации, когда у вас есть пара ключ/значение, чтобы пройтись по ним.

// JavaScript
let template = 'Привет, меня зовут {name}. Вы {action} моего {relation}.'
let values = {
  name: 'Иниго Монтойя',
  action: 'убил',
  relation: 'отца',
};
let output = template;
for(let entry of Object.entries(values)){
  output = output.replace('{'+entry[0]+'}',entry[1]);
}
console.log(output);

В последнее время я использую это в pl/SQL.

0

Самый простой способ сделать это:

`my string ${VARIABLE}`

Менее эффективный способ достижения той же цели выглядит следующим образом:

function format(str, ...params) {
  for (const param of params)
    str = str.replace("%", param);
  return str;
}

Эту функцию можно использовать так:

format("My % string", "interpolation")
0

Если вы хотите использовать интерполяцию в выводе console.log, просто сделайте это следующим образом:

console.log("Извержение 1: %s", eruption1);
                         ^^

Здесь %s — это то, что называется "спецификатором формата". console.log имеет такую поддержку интерполяции встроенной.

0

Ваша проблема заключается в том, что вы хотите вывести строку с использованием переменной age в формате "Мне 3 года!". Это можно сделать с помощью шаблонных строк ES6, используя обратные кавычки (`). Вот пример кода, который вы можете использовать:

let age = 3;

console.log(`Мне ${age} года!`);

Обратите внимание, что при использовании шаблонных строк вы можете легко вставлять переменные и выражения в строку, заключив их в ${}. Этот подход делает код более читабельным и удобным.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь