【发布时间】:2016-05-18 16:11:45
【问题描述】:
我在 google 电子表格中有一个单元格,其中包含文本“s/ *│ */\t/g”。
我正在使用代码
function minimalExample(){
var text = "a │ b"
var pattern = SpreadsheetApp.getActiveSheet().getRange('B3').getValue() // cell contains "s/ *│ */\t/g"
var regexSplitter = /s\/(.*)\/(.*)\/(\w+)/; // pattern to split sed line into search/replace/modifier
var patternParts = pattern.match(regexSplitter); // list with search [1], replace [2], modifier [3]
text = text.replace(new RegExp(patternParts[1], patternParts[3]),patternParts[2]);
Logger.log(text);
return true;
}
预期的输出是“a b”,但我得到的是“a\tb”。
如何改变这种行为?
【问题讨论】:
-
为什么预期的输出是
a b?您收到的是a\tb,因为这正是单元格中写的内容。从您放入代码中的"\t"中制作标签的东西基本上是读取您的代码的解析器。从其他地方加载的字符串不会神奇地转换。如果要将字符串中的所有\ts 转换为制表符,则需要对其执行.replace(/\\t/g, "\t")。 -
那么,"a b" 将是 desired 输出:)
标签: javascript google-apps-script google-sheets google-spreadsheet-api