我编写了一个简单的ruby脚本,它从txt文件中读取URL,然后下载这些文件。
txt文件可能包含具有尾随#
字符的注释。
我正在逐行读取文件,选择并删除每一行,然后检查每一行是否以#
符号开头。
现在我遇到的问题是line.start_with?("#")
总是返回false,即使该行以#前导开头。
我检查过这些角色,发现line[0]
确实没有#
个字符;它位于line[1]
。
可以吗。解释这里发生了什么?它与文件的UTF-8字符编码有关吗?
THX!
答案 0 :(得分:1)
尝试使用puts line.inspect
查看字符串中是否有任何未注意到的内容。
答案 1 :(得分:0)
你可能想先尝试剥离,例如
line.strip.start_with?("#")
答案 2 :(得分:0)
你说在检查之前你正在剥离字符串。但是,我猜你还在领先空白。那么,你打电话给strip
还是strip!
?普通strip
方法返回剥离的字符串,但不更改字符串,strip!
版本更改字符串;如果您只是使用strip
,那么您可能会在不知不觉中丢弃被剥离的字符串,然后对仍然存在的前导或尾随空格感到困惑。
当您需要chomp
时,类似的问题可能适用于chomp!
的使用。
此外,没有必要同时使用chomp
和strip
,只需strip
(或strip!
)就足够了chomp
,或多或少,只是rstrip
的限制版本,而本质上只是strip
只应用于字符串的结尾。
答案 3 :(得分:0)
我找到了问题的原因:strange characters at beginning of file
......但不是解决方案。