打字稿:在匹配的字符串前插入变量

时间:2017-05-14 10:45:09

标签: javascript json regex typescript

getAnArticle(articleId: string): Observable<any> {
    return this._http.get(`${this._url}/${articleId}`)
      .map((response: Response) => response.json())
      .do(value => console.log(value))
      .catch((error) => Observable.throw(error));
  }

在上面的代码中,http.get通过URL请求如下:

http://website.com/.json/5

如何在.json之前插入{articleId}(在此示例中为5),以便将URL实际读取为:

http://website.com/5.json

3 个答案:

答案 0 :(得分:1)

您的this._url变量看起来很糟糕。实现这一目标的正确方法是修复变量,以便更容易操作。如果您无法修改此变量的计算方式,则唯一的机会是替换值:

return this._http.get(this._url.replace(".json", articleId + ".json"))

答案 1 :(得分:1)

你需要这样的东西(假设你的网址已经是.json

&#13;
&#13;
var url = 'www.asd.com/.json'
var articleId = 2;
var a = `${url.split('/.json')[0]}/${articleId}.json`
console.log(a)
&#13;
&#13;
&#13;

在你的情况下:

getAnArticle(articleId: string): Observable<any> {
    return this._http.get(`${this._url.split('/.json')[0]}/${articleId}.json`)
      .map((response: Response) => response.json())
      .do(value => console.log(value))
      .catch((error) => Observable.throw(error));
  }

答案 2 :(得分:0)

如果您拥有this.url的控制权,则可以使用令牌来定义它,以指示ID应该去​​的地方,例如

this._url = 'http://website.com/{articleId}.json';
...
return this._http.get('${this._url.replace('{id}', articleId))

这样您的代码就不会与网址格式相关联。