设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 4442|回复: 25
打印 上一主题 下一主题

关于readlines

 关闭 [复制链接]

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1707
在线时间
3039 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

跳转到指定楼层
1
发表于 2008-6-3 00:53:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
读取文本文件要用到“readlines”
有没有其详细用法?
写入字符:

  1. f = File.open("./data.txt","w")
  2. f.write( "1")
  3. f.close
复制代码

读取部分(节选)
  1. @f = File.open("./data.txt","r")
  2.     s = []
  3.     s[0] = "新游戏"
  4.     s[1] = "退出"
  5.     case @f.readlines[0]
  6.     when "1"
  7.     s[2] = "第二关"
  8.     when "2"
  9.     s[2] = "第二关"   
  10.     s[3] = "第三关"
  11.     when "3"
  12.     s[2] = "第二关"  
  13.     s[3] = "第三关"  
  14.     s[4[= "第四关"     
  15.     end
复制代码

可以不可以储存多个变量并读取多个变量呢。
请高手指点。
另外帮助里这么写的:
readlines([rs])
读入所有数据后,以行为单位将其转化为数组,并返回该数组。若 IO 已到达 EOF 则返回空数组 []。

使用 rs 所指字符串进行行的切分,rs 的默认值为 "\n"。

若将 rs 指定为 nil,则意味着忽略行的切分。若指定为空字符串 "" 的话,将把连续的换行当作行的切分符(段落模式)。

如何写入和读取多个变量操作呢? [LINE]1,#dddddd[/LINE]版务信息:版主帮忙结贴~

Lv1.梦旅人

梦石
0
星屑
142
在线时间
264 小时
注册时间
2006-11-22
帖子
1057
2
发表于 2008-6-3 02:33:57 | 只看该作者
  1. @f = File.open("./data.txt","r")
  2.     s = []
  3.     s[0] = "新游戏"
  4.     s[1] = "退出"
  5.     n = @f.readlines
  6.     case n[0]
  7.     when "1\n"
  8.     s[2] = "第二关"
  9.     when "2\n"
  10.     s[2] = "第二关"   
  11.     s[3] = "第三关"
  12.     when "3\n"
  13.     s[2] = "第二关"  
  14.     s[3] = "第三关"  
  15.     s[4]= "第四关"     
  16.   end
复制代码
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1707
在线时间
3039 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

3
 楼主| 发表于 2008-6-3 18:00:50 | 只看该作者
这样么?
我似乎没有说明白。
如果同时动用2个变量,例如可以使用
if n.readlines[0] == 1 or n.readlines [1] == 2
...
这样的话,怎么写呢?
例如,我想存储2个变量,如何写那个
f = File.open("./data.txt","w")
f.write( "...")
f.close
可以得到这个效果:
@f = File.open("./data.txt","r")
a = @f.readlines[0]
b = @f.readlines[1]
p a,b #=>1,2
@f.close
里面的省略号里面要填什么?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
1265
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

4
发表于 2008-6-3 18:08:03 | 只看该作者
readlines 讀取到的只能是 String,不可能是num

使用方法跟split基本一樣。
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1707
在线时间
3039 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

5
 楼主| 发表于 2008-6-3 18:16:24 | 只看该作者
如何能将其分割呢?
是不是需要用
f.write( "1\n2")
来进行分割呢?
或者把数据转换以后再进行存储和读取工作?
另外,中间能直接存储变量么?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
1265
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

6
发表于 2008-6-3 18:23:22 | 只看该作者
f = file.open('禾西的brain.text','r')
p f.readlines

["簡單地說吧\n",
"當我們的text文檔用readlines來讀的話就會是這個樣子的\n",
"每一行都會成爲數組的一個元素\n",
"當我們用 ×××.puts String 的時候\n",
"Ruby 會自動加上"\n"這個東東\n"]

f.close

然後當我們打開text文檔的時候就看見我們的說話像這個樣子:
而readlines默認情况下會根據"\n"這個東西來分段,也就是一行爲一個元素。
你不必要一定使用"\n"當然也可以使用"@"、","甚麽的
只要readlines([@])或者readlines([,])就可以了

實際上就是你的理解一樣,不過實際上.write("   ")這個東西可以隨便寫。
readlines的時候注意一致就可以

PS:以上沒有亂碼

系统信息:本贴由本区版主认可为正确答案,66RPG感谢您的热情解答~
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1707
在线时间
3039 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

7
 楼主| 发表于 2008-6-3 18:31:34 | 只看该作者
也就是说,可以使用
f.write( "1\n2")
就能达到
a = @f.readlines[0]
b = @f.readlines[1] #a,b分别被赋予了两个不同的字符串
这种情况吧。
里面的存储的东西能不能达到

  1. 1
  2. 2
复制代码

这个目的呢。
如果用其它的作为分界符的话,要读取里面的某一个元素应该怎么写。
另外能不能使用
a = $game_variables[1]to_s
b = $game_variables[2]to_s
f.write( a,"/n",b)
的模式来存储a和b的内容?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
1265
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

8
发表于 2008-6-3 18:33:57 | 只看该作者
String 和 Int 的轉換可以用 ×××.to_i
還有,.readlines是很耗費精力的。要是重複調用當中的數據,記得把.readlines的返回值儲存起來
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

精灵族の天使

梦石
0
星屑
1707
在线时间
3039 小时
注册时间
2007-3-16
帖子
33731

开拓者贵宾

9
 楼主| 发表于 2008-6-3 18:36:51 | 只看该作者
如果用其它的作为分界符的话,要读取里面的某一个元素应该怎么写。
另外能不能使用
a = $game_variables[1].to_s
b = $game_variables[2].to_s
f.write( a,"/n",b)
的模式来存储a和b的内容?
我首先读取和存储的东西都会另存为的。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
1265
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

10
发表于 2008-6-3 18:50:31 | 只看该作者
不行耶。
.write( )只能帶一個參數,你的有3個了。
可以使用以下方法(禾西常用)
f.puts a
f.puts b

試試以下代碼,你應該比較容易明白

  1. f = File.new("./data.txt","w")
  2. f.write("我×你×蘿蔔")
  3. f.puts "好high"
  4. f.close

  5. f = File.open("./data.txt","r")
  6. array = f.readlines("×")
  7. f.close
  8. p array
复制代码


另外儲存變量何不學習 Save ?
那個M***.dump()的函數(忘記名字了==a)
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-8-3 03:12

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表