Ruby 字符串的 array flatten 以后会带上引号吗?

yakczh · 2014年12月11日 · 最后由 msg7086 回复于 2014年12月12日 · 1814 次阅读
filename='ctiy.txt'
file=File.open(filename,"r:UTF-8")

result=[]
file.each{ |line|
  city=line.scan(/([^(]*)\(/)

result.push(city[0])
}
result.flatten!()
pp result

city.txt 的内容

北京市 (78) 上海市 (62) 广东省 (133) 江苏省 (32) 浙江省 (87) 山东省 (48) 湖北省 (17)

puts result 的话 是显示 北京市 上海市 广东省 pp result 的话是显示 ["\u5317\u4EAC\u5E02", "\u4E0A\u6D77\u5E02", "\u5E7F\u4E1C\u7701",

那这个输出结果到底是带引号还是不带引号呢? 其实我想要的效果是 ["北京市","上海市","广东省"] 这种的

没有啊,引号在双引号里会转义的:"\"...\"" 可以用 File.foreach:

result = File.foreach(filename,encoding:'utf-8').map{|line| line[/([^(]+)/,1]}

puts result.inspect

出现引号是给你看的,不是字符串内部的。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号