我想用卷曲雙引號替換所有直雙引號:
const text = `"This has an opening and a closing quote."
"This only has an opening quotes
This doesn't have quotes.`
const result = text.replace(/"([^"\n\r]*)"?/g, '“$1”')
console.log(result)
我當前的問題.replace是當沒有關閉直雙引號時它會添加卷曲雙引號:
“這有一個開場白和一個結束語。”
“這只有一個開場白”
這沒有引號。
如何更改我的.replace函式,以便在沒有直雙右引號時它不會添加卷曲雙引號?
預期輸出:
“這有一個開場白和一個結束語。”
“這只有一個開場白
這沒有引號。
uj5u.com熱心網友回復:
您可以將此代碼與 2 個.replace方法呼叫一起使用:
- 首先,我們匹配一對直引號并替換為雙引號(html 物體)。
- 其次,
.replace我們只匹配 single"并替換為左卷曲雙引號(html 物體)。
這假設"參考對替換后的單個是打開的。
代碼:
const text = `"This has an opening and a closing quote."
"This only has an opening quotes
This doesn't have quotes.`;
const result = text.replace(/"([^"\n\r]*)"/g, '“$1”').replace(/"/g, '“');
console.log(result)
uj5u.com熱心網友回復:
使用 Unicode 而不是 HTML 物體。像這樣:
const text = `"This has an opening and a closing quote."
"This only has an opening quotes
This doesn't have quotes.`
const result = text.replace(/"([^"\n\r]*)"?/g, '\u201d$1\u201c')
console.log(result)
哪里\u201d是開頭的大引號和\u201c結尾的大引號。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/358608.html
標籤:javascript 正则表达式
上一篇:使用異步函式作為條件
