作者fbukevin (Veck)
看板Ruby
标题[问题] =~
时间Mon Jul 19 15:43:18 2010
大家好
我碰到的问题是下列程式码执行的结果:
#encoding : big5
pattern = Regexp.new(ARGV[0])
filename = ARGV[1]
file = open(filename)
while text =file.gets do
if pattern =~ text
print text
end
end
file.close
这是我照书上打的程式
但是当我执行时输入: ruby 档名.rb xxx yyy.txt
之後就会显示出错误讯息:
grep.rb:10:in `=~': invalid byte sequence in Big5 (ArgumentError)
from grep.rb:10:in `<main>'
为什麽会这样?我照书上的写,同一个目录下也真的有yyy.txt
找不到错误QQ
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.170.224.200
※ 编辑: fbukevin 来自: 118.170.224.200 (07/19 15:43)
1F:→ shelary:不要用 big5 看看丫..用 utf8 07/19 15:47
2F:→ fbukevin:刚试过的,还是会出状况>< 07/19 16:04
3F:→ godfat:你的档案是啥编码..? 07/19 16:05
4F:→ fbukevin:我试过ANSI、Unicode和UTF8存档,但都有相同问题耶! 07/19 18:53
5F:推 zero00072:yyy.txt 里面有中文吗?有中文的话,正规式好像不支援。 07/19 21:16
6F:推 godfat:ruby 1.9 的 regexp 支援所有支援的编码,你一定哪里设错.. 07/20 01:14
7F:推 zero00072:嗯嗯,板主说的对,正规式已经可以对所有的码支援了。 07/20 09:15
8F:推 zero00072:我试过也没问题,ruby 1.9.2、UTF-8、GNU/Linux。 07/20 09:28
9F:→ zero00072:open(ARGV[1]).each do |text| 07/20 09:32
10F:→ zero00072: puts text if text =~ Regexp.new(ARGV[0]) 07/20 09:33
11F:→ zero00072:end 07/20 09:33
12F:推 hellolucky:pattern和text写反了? text =~ pattern ?? 08/19 23:52
13F:→ hellolucky:不是说楼上 是说原文 08/19 23:53