[英]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`;
如果x
和y
都應該被轉義以便用'-'
替換'/'
,那么你可以這樣做:
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.