在将CSV文件读入数组的过程中,我注意到第一个数组元素是一个字符串,包含一个前导""
例如:
meteor create myapp
cd myapp
meteor
给了我......
" SalesRepName"
然后我偶然尝试尝试:
str = contacts[0][0]
p str
那给了我......
[""," S"," a"," l"," e", " s"," R"," e"," p"," N"," a& #34;," m"," e"]
我已经检查了数组中的每个其他元素,这是唯一一个包含前导""的字符串。
答案 0 :(得分:6)
现在,在我发布这个问题之前,我偶然发现了答案。显然,我写这个问题的行为给了我一个确定这个""的ascii数的想法。字符。
str = contacts[0][0].split(//)
p str
给了我
[65279]
在询问ascii字符65279后,我发现这篇文章: https://stackoverflow.com/a/6784805/3170942
据SLaks说:
它是一个零宽度的不间断空间。它更常用作a 字节顺序标记(BOM)。
这反过来又让我得到了解决方案:
https://stackoverflow.com/a/7780559/3170942
在这个回复中,knut提供了一个优雅的解决方案,如下所示:
str = contacts[0][0].split(//)
p str[0].codepoints
," r:bom | utf-8" 是我要找的关键元素。 所以我把它改编成了我的代码,它变成了这个:
File.open('file.txt', "r:bom|utf-8"){|file|
text_without_bom = file.read
}
我在这个愚蠢的问题上花了好几个小时。希望这会节省你一些时间!