如何在 Google Docs 上把 "dump quotes" 替換成 “smart quotes”

近期常常使用ChatGPT來做翻譯或是撰寫英文文章,但是ChatGPT所生成的英文都會使用dump quotes,也就是「"」這樣的quotes。但在英文的寫作中,卻需要替換成「”」這樣的smart quotes。

這件事情困擾了一陣子後,我終於找到一篇完整說明解決方案的Stackoverflow文章,讓我可以在Google Docs中一次性取代這些quotes。在此我整理該文章的內容並翻譯成中文給大家參考。

手動執行

手動執行的方法如下:

  • 點選「編輯」→「尋找並取代」。
  • 在跳出來的「尋找並取代」視窗中,請務必確認「使用規則運算式」有被勾選。
  • 尋找「(?<=\s|^)\"」(此語法代表「"」位於開頭或前面有空白)並取代為「」。
  • 剩下的「"」應該都位於結尾的位置,所以尋找「\"」並取代為「」就可以把剩下來的「"」都取代掉。
  • 接下來,如果你的文章中還有「'」,那接著就繼續用類似的方式處理。
  • 尋找「(?<=\s|^)\'」並取代為「」。
  • 最後,尋找「\'」並取代為「」即可。

這樣應該就可以大功告成了。

使用App Script

如果您想要使用App Script來處理,可以嘗試這樣做:

  • 點選「擴充功能」→「App Script」。
  • 在跳出來的程式碼框中,貼上以下程式碼:
function replaceQuotes() {
var doc = DocumentApp.getActiveDocument();
var body = doc.getBody();
var text = body.getText();

// 替換雙引號
var startDoubleQuotePattern = /(?<=\s|^)"/g;
var endDoubleQuotePattern = /"/g;

// 先替換起始雙引號
text = text.replace(startDoubleQuotePattern, "“");

// 然後替換剩下的結束雙引號
text = text.replace(endDoubleQuotePattern, "”");

// 替換單引號
var startSingleQuotePattern = /(?<=\s|^)'/g;
var endSingleQuotePattern = /'/g;

// 先替換起始單引號
text = text.replace(startSingleQuotePattern, "‘");

// 然後替換剩下的結束單引號(包含撇號)
text = text.replace(endSingleQuotePattern, "’");

// 更新文件中的文字
body.setText(text);
}
  • 點選「儲存」後,再點選「執行」。若有需要,請授權這個專案讓App Script可以運作。

以上這樣的步驟應該就會完成了。

不過,如果你遇到了「系統已封鎖這個應用程式」,那應該就是另外一個我們要來解決的問題了……

--

--

雨蒼 (Billy Zhe-Wei Lin)

自由軟體工作者,公民記者。Open source worker and citizen journalist.