Google电子表格getValue([cell containing ])不返回制表符
Google Spreadsheet getValue([cell containing ]) does not return a tabulator
我在谷歌电子表格中有一个单元格,其中包含文本"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"。
我该如何改变这种行为?
对我来说,您的代码运行良好:
[16-05-18 18:20:27:447 CEST] 't is not the same as
然而,我想您的真实代码看起来不同,并像patternParts[2] == "'t"
一样进行比较,因为字符't
确实与is not the same as
之后的不可见制表符不同。
因此,情况正好相反:patternParts[2]
确实包含't
,但您的比较不正确。在JavaScript中,使用双引号时可以使用转义序列,如'n
、't
、'uXXXX
等。
因此,如果要比较patternParts[2]
和't
,请使用单引号(patternParts[2] == ''t'
)或转义反斜杠(patternParts[2] == "''t"
)。
编辑:根据您更新的问题:如果您想将单元格中的所有't
(只是'
和t
这两个字符,没有什么特别的)转换为制表符,那么您需要去替换它们:
patternParts[2] = patternParts[2].replace(/''t/g, "'t");
如果您的替换部分中有兼容JavaScript的转义序列,您还可以使用JSON.parse('"' + theString + '"')
之类的技巧让JS替换其中的所有转义序列。请注意,如果字符串中有无效的东西,如杂散的无标题双引号,这将引发异常,因此请注意:
try {
patternParts[2] = JSON.parse('"' + patternParts[2] + '"');
} catch(e) {
// Invalid syntax! Handle the error here somehow
}
相关文章:
- 节点导出返回一个空对象
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 控制台返回var不是't定义,但它是
- 从函数返回角度承诺
- Javascript返回值只在循环中返回一次
- 从控制器返回后Ajax启动事件激发
- CKFinder 3为所选文件返回错误的URL
- 如何在d3.js中返回路径的y坐标
- 如何从jquery函数返回变量
- Angular js-返回一个包含类似
- JSONP请求返回结果,但也触发error_callback
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- JS验证ajax返回的html中的表单数据
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- AJAX:$_GET不返回任何值
- 从Javascript方法返回全局变量
- Google电子表格getValue([cell containing ])不返回制表符
- 失败事件返回 false 值的制表符,当使用辐射窗口时