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

yakczh · December 11, 2014 · Last by msg7086 replied at December 12, 2014 · 1814 hits
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

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

You need to Sign in before reply, if you don't have an account, please Sign up first.