String.Format как C# в машинописном тексте

Можно ли использовать аналогичную функцию, такую ​​как String.Format C#, в TypeScript?

Моя идея - сделать такую ​​строку, как:

url = "path/{0}/{1}/data.xml"

в зависимости от логической установки {0} и {1}. Obiouslly я могу заменить их, но я думаю, что String.Format - понятная функция.

Зод: сила проверки и преобразования данных
Зод: сила проверки и преобразования данных
Сегодня я хочу познакомить вас с библиотекой Zod и раскрыть некоторые ее особенности, например, возможности валидации и трансформации данных, а также...
Как заставить Remix работать с Mantine и Cloudflare Pages/Workers
Как заставить Remix работать с Mantine и Cloudflare Pages/Workers
Мне нравится библиотека Mantine Component , но заставить ее работать без проблем с Remix бывает непросто.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
TypeScript против JavaScript
TypeScript против JavaScript
TypeScript vs JavaScript - в чем различия и какой из них выбрать?
Синхронизация localStorage в масштабах всего приложения с помощью пользовательского реактивного хука useLocalStorage
Синхронизация localStorage в масштабах всего приложения с помощью пользовательского реактивного хука useLocalStorage
Не все нужно хранить на стороне сервера. Иногда все, что вам нужно, это постоянное хранилище на стороне клиента для хранения уникальных для клиента...
Что такое ленивая загрузка в Angular и как ее применять
Что такое ленивая загрузка в Angular и как ее применять
Ленивая загрузка - это техника, используемая в Angular для повышения производительности приложения путем загрузки модулей только тогда, когда они...
8
0
13 170
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Вам нужно сделать путь как функцию, которая может принимать 2 параметра. Затем он вернется в виде строки, если мы вызовем функцию с необходимыми параметрами.

const pathFn= (param1, param2) => "path/${param1}/${param2}/data.xml";
let param1 = "student";
let param2 = "contantdetails";
let resultPath = pathFn(param1,param2);

Вы могли бы использовать кавычки летучей мыши для интерполяции строки, а также использовать маркер интерполяции ($), чтобы произошла замена. См .: typescriptlang.org/play/…

Joseph Ferris 19.05.2018 20:43

Я думаю, вы ищете обратную цитату: ''

var firstname = 'Fooo';
var lastname = 'Bar';

console.info(`Hi ${firstname} ${lastname}. Welcome.`);

Вы можете найти обратную кавычку на клавише тильды.

String.format вы можете использовать массив и позицию 0 в формате, а следующий - значения, но все в массиве основных объектов.

David 20.05.2018 14:20

Именно то, что я искал !! Спасибо !!

Sotiris Zegiannis 29.11.2020 13:24

ИМО, это должен быть принятый ответ

randymay 13.04.2021 17:06
Ответ принят как подходящий

Расширение комментария, сделанного мною к ответу vivekkurien, объявление функции, которая, в свою очередь, интерполирует, вероятно, является самым большим подходом «окупаемости». Я часто использую это, например, для создания фрагментов повторяющегося HTML с незначительными изменяющимися свойствами.

Однако ответ от vivekkurien не работает. Вместо этого он возвращает буквальную строку. Вот модифицированный образец, основанный на исходном ответе:

const pathFn = (param1, param2) => `path/${param1}/${param2}/data.xml`;

let param1 = "student";
let param2 = "contantdetails";
let resultPath = pathFn(param1, param2);

alert(resultPath);

Работоспособный пример приведенного выше кода можно найти здесь: Функциональная интерполяция на игровой площадке TypeScript

String.format вы можете использовать массив и позицию 0 в формате, а следующий - значения, но все в массиве основных объектов. Можно ли это сделать в Машинописи?

David 20.05.2018 14:20

Не изначально, о чем я знаю. При этом просмотрите второй ответ на этот вопрос, который звучит очень близко к тому, что вы ищете: stackoverflow.com/questions/20070158/…

Joseph Ferris 20.05.2018 19:43
const StringFormat = (str: string, ...args: string[]) =>
  str.replace(/{(\d+)}/g, (match, index) => args[index] || '')

let res = StringFormat("Hello {0}", "World!")
console.info(res) // Hello World!
res = StringFormat("Hello {0} {1}", "beautiful", "World!")
console.info(res) // Hello beautiful World!
res = StringFormat("Hello {0},{0}!", "beauty")
console.info(res) //Hello beauty,beauty!
res = StringFormat("Hello {0},{0}!", "beauty", "World!")
console.info(res) //Hello beauty,beauty!

Попробуйте в TypeScript Playgroud

Это сработало для меня. Пробовал с разными сценариями.

format(text: string, ...args: string[]): string {
    return text.replace(/{(\d+)}/g, (match, num) => {
      return typeof args[num] !== 'undefined' ? args[num] : match;
    });
  }

Другие вопросы по теме