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

时间:2018-05-19 18:18:14

标签: typescript

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

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

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

取决于逻辑I集{0}和{1}。我可以替换它们,但我认为String.Format是一个明确的功能。

5 个答案:

答案 0 :(得分:6)

我认为你正在寻找回报:``



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

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




您可以在代字键上找到后引号。 enter image description here

答案 1 :(得分:2)

扩展我对vivekkurien的回复所做的评论,声明一个函数,反过来,插值可能是最大的" bang for your buck"做法。例如,我经常使用它来生成具有微小变化属性的重复HTML块。

然而,vivekkurien的回答并不奏效。它返回一个文字字符串。这是一个修改后的样本,基于原始答案:

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

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

alert(resultPath);

可以在此处找到上述代码的可运行示例:Function-Based Interpolation at TypeScript Playground

答案 2 :(得分:1)

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!

尝试TypeScript Playgroud

答案 3 :(得分:0)

您需要将路径设为可接受2参数的函数。 如果我们用所需的参数调用函数,它将以字符串形式返回。

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

答案 4 :(得分:0)

这对我有用。尝试了不同的情况。

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