簡體   English   中英

關於模板文字值的 if 語句

[英]if statement on template literal value

我正在嘗試執行以下操作但無濟於事:在某些情況下self.name在值的中間有一個錯誤的 ' / '; IE。 這樣填充' WSDH/222-310 ' - 我試圖簡單地捕捉它並將其轉換為值以在我的以下.load調用中解析為' WSDH-222-310 '

  if (self.type === "car") {
       var carClean = ${self.name}; // returns syntax error
       var res = str.replace("/", "-");
       console.log(carClean )
       console.log(res)
      //  console.log({self.type});
  }

  self.$container.load(`view/coolObjects/${self.type}/${self.name}`, loadProfile);

為什么要在使用清潔琴弦?

我不清楚您到底要做什么,但是您可以像這樣即時“清理”:

self.$container.load(`view/coolObjects/${self.type}/${self.name.replace("/","-")}`, loadProfile);

你周圍的代碼是否有效,我不知道。 但這是我建議的工作示例:

 let self = {"type":"mytype","name":"myname"}; console.log(`view/coolObjects/${self.type}/${self.name.replace("my","your")}`);

如果所有嵌入的變量都應該被轉義,我認為有一個標記模板的用例。

更高級的模板文字形式是標記模板。 標簽允許您使用 function 解析模板文字。 標簽 function 的第一個參數包含一個字符串值數組。 其余的 arguments 與表達式有關。 最后,您的 function 可以返回您操縱的字符串

例子:

var path = `foo/${x}/${y}/bar`;

如果xy都應該被轉義以便用'-'替換'/' ,那么你可以這樣做:

 const sanitize_path = (strings, ...parts) => strings.flatMap((str, idx) => [ str, idx < parts.length? parts[idx].replace(/\//g, '-'): '' ]).join(''); const x = '1/2/3'; const y = 'y'; console.log( sanitize_path`foo/${x}/${y}/bar` );

如果我正確理解了您的問題,那么您使用String.prototype.replace走在正確的軌道上-應該像這樣簡單:

 var self = { name: 'WSDH/222-310' }; self.name = self.name.replace('/', '-'); console.dir(self);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM