像打字稿中的C#这样的String.Format

Dav*_*vid 1 typescript

是否可以在TypeScript中使用类似C#的String.Format之类的功能?

我的想法是制作一些像这样的字符串:

url = "path/{0}/{1}/data.xml"
Run Code Online (Sandbox Code Playgroud)

根据逻辑,我设置了{0}和{1}。令人讨厌的是我可以替换它们,但我认为String.Format是一个明确的功能。

Jos*_*ris 11

扩展我对 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);
Run Code Online (Sandbox Code Playgroud)

可以在此处找到上述代码的可运行示例:TypeScript Playground 的基于函数的插值


Edw*_*ung 11

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

let res = StringFormat("Hello {0}", "World!")
console.log(res) // Hello World!
res = StringFormat("Hello {0} {1}", "beautiful", "World!")
console.log(res) // Hello beautiful World!
res = StringFormat("Hello {0},{0}!", "beauty")
console.log(res) //Hello beauty,beauty!
res = StringFormat("Hello {0},{0}!", "beauty", "World!")
console.log(res) //Hello beauty,beauty!
Run Code Online (Sandbox Code Playgroud)

TypeScript Playgroud 中尝试


Mik*_*der 7

我认为您正在寻找反引号:``

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

console.log(`Hi ${firstname} ${lastname}. Welcome.`);
Run Code Online (Sandbox Code Playgroud)

您可以在波浪号上找到反引号。 在此处输入图片说明