我正在尝试使用ruby 1.8.7在mac上读取.strings文件。下面是irb输出。如您所见,line
是一个以/*
开头的注释字符串。但是当我执行start_with
命令时,当我预期它返回true时,它返回false。我怀疑所有\000
都在搞乱字符串比较。
那么我该怎么做才能删除\000
?
f = File.open("en.lproj/Localizable.strings")
#<File:en.lproj/Localizable.strings>
line = f.readline
"/\000*\000 \000T\000h\000i\000s\000 \000i\000s\000 \000a\000 \000s\000t\000r\000i\000n\000g\000 \000c\000o\000m\000m\000e\000n\000t\000 \000*\000/\000\r\000\n"
puts line
/* This is a string comment */
line.start_with?("/* ")
false
答案 0 :(得分:2)
line.start_with?("/\000*\000 ")
nul字节"\000"
没有任何可视化表示,所以当你puts line
时你看不到它们,但如果通过{{{{}}管道你的脚本输出,你可能会看到它们1}}:
cat -v
/^@*^@ ^@T^@h^@i^@s^@ ^@i^@s^@ ^@a^@ ^@s^@t^@r^@i^@n^@g^@ ^@c^@o^@m^@m^@e^@n^@t^@ ^@*^@/^@^M^@
是^@
表示零字节的方式。
cat -v
我不确定line.tr!("\000", '')
文件的格式,因此您应该弄明白并特别指出字符串编码。看起来它可能是UTF-16但也许不是;如果它是标准的非ASCII编码,那么您将需要使用iconv
来正确地整理编码。