GAS问题:按换行符分割字符串时添逗号致比较失败
问题原因及解决办法
核心问题
你遇到的问题根源在于split('\n')的返回值类型:
split()方法返回的是数组,不是字符串。比如'Chess\n'.split('\n')会生成数组['Chess', ''](换行符把原字符串分割成了"Chess"和空字符串两个元素)。- 当你用
==比较字符串和数组时,JavaScript会自动把数组转为字符串,数组转字符串时会用逗号连接所有元素,所以['Chess', '']会变成'Chess,',这自然和'Chess'不相等,导致比较失败。 - 控制台打印时同样会触发数组转字符串的逻辑,所以你会看到输出里多了逗号。
解决办法
推荐以下几种简单的修复方式:
1. 用trim()去除首尾空白(最简便)
trim()会自动移除字符串首尾的所有空白字符(包括换行符、空格、制表符等),代码修改后:
var test_Array = ['Chess', 'Chess\n']; if (test_Array[0] == test_Array[1].trim()) { console.log('Test'); // 现在会正常打印 } console.log(test_Array[0] + ' - ' + test_Array[1].trim()); // 输出 Chess - Chess
2. 精准替换末尾的换行符
如果只需要去除末尾的换行(不想影响其他空白),可以用正则替换:
var test_Array = ['Chess', 'Chess\n']; if (test_Array[0] == test_Array[1].replace(/\n$/, '')) { console.log('Test'); }
3. 取split()结果的第一个元素(适合理解逻辑)
如果你一定要用split(),直接取数组的第一个元素即可:
var test_Array = ['Chess', 'Chess\n']; if (test_Array[0] == test_Array[1].split('\n')[0]) { console.log('Test'); }
内容的提问来源于stack exchange,提问作者Southern-Remove
相关产品推荐
相关产品推荐

