首页 > 解决方案 > 带有可替换变量的字符串(相当于 php 的 sprintf)

问题描述

我有一个如下所示的课程

interface IParams: {
  academicYearId: number;
  // Other Params
};
export class myClass() {
  function1() {
    const url = `api/accounts/academic-year/${academicYearId}/financial-plan`;
    // Function 1 Functionality
  }
  function2() {
    const url = `api/accounts/academic-year/${academicYearId}/financial-plan`;
    // Function 2 Functionality
  }
  function3() {
    const url = `api/accounts/academic-year/${academicYearId}/financial-plan`;
    // Function 2 Functionality
  }
}

为了减少重复,我将 url 设为属性

interface IParams: {
  academicYearId: number;
  // Other Params
};
export class myClass({academicYearId}: ) {
  url = `api/accounts/academic-year/:id/financial-plan`;
  urlWithId = (academicYearId: number) => this.url.replace(':id', academicYearId )
  function1() {
    const url = this.urlWithId(academicYearId)
    // Function 1 Functionality
  }
  function2() {
    const url = this.urlWithId(academicYearId)
    // Function 2 Functionality
  }
  function3() {
    const url = this.urlWithId(academicYearId)
    // Function 2 Functionality
  }
}

上述方法有效,但我想知道是否有更好的方法可以处理以下两行,而不是将字符串的一部分设置为':id'然后用 id 值替换该部分。类似于php 的 sprintf

url = `api/accounts/academic-year/:id/financial-plan`;
urlWithId = (academicYearId: number) => this.url.replace(':id', academicYearId )

标签: javascriptangularstring

解决方案


字符串插值

这是一种常见的方法,如下所示:

urlWithId = (academicYearId) => `api/accounts/academic-year/${academicYearId}/financial-plan`;

推荐阅读