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

Project1

 找回密码
 注册会员
搜索

如何读取一个TXT文档的内容、在哪有这种苏如法?

查看数: 2048 | 评论数: 5 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2012-6-30 18:07

正文摘要:

本帖最后由 chd114 于 2012-6-30 20:00 编辑

回复

chd114 发表于 2012-7-1 14:40:45
Wind2010 发表于 2012-7-1 14:31
把文档读取后自己提取不就行了?
file.open

file.open.split("注册码")[1].to_i?我要读取指定内容不是名字···
Wind2010 发表于 2012-7-1 14:31:19
chd114 发表于 2012-7-1 13:35
少点评一次不会死吧···你之前的问题有的想采纳你都不行结果浪费我200EXP···@hys111111另外,我说的是 ...

把文档读取后自己提取不就行了?
file.open
chd114 发表于 2012-7-1 13:35:37
少点评一次不会死吧···你之前的问题有的想采纳你都不行结果浪费我200EXP···@hys111111另外,我说的是读取指定文档指定的内容 @yanzheng868 @Wind2010

点评

晕倒,指定内容……  发表于 2012-7-1 13:42
Wind2010 发表于 2012-6-30 21:23:41
目测是夏娜输入法- -LZ搜索一下吧
yanzheng868 发表于 2012-6-30 21:08:25
本帖最后由 yanzheng868 于 2012-6-30 21:09 编辑
  1. #==============================================================================
  2. # ◎ GPRA_TextStream
  3. #------------------------------------------------------------------------------
  4. # ◎ TXT文件读取流类
  5. #------------------------------------------------------------------------------
  6. # 制作者:绿梨子红苹果
  7. # 个人主页:vbgm.9126.com
  8. # E-Mail:[email protected]
  9. # QQ:42378361
  10. #------------------------------------------------------------------------------
  11. # 附加说明:TXT文件需要是UTF-8编码(Windows自带记事本支持),其它的好似会乱码
  12. #==============================================================================

  13. class TextStream
  14.   #--------------------------------------------------------------------------
  15.   # ● 初始化状态
  16.   #--------------------------------------------------------------------------
  17.   def initialize
  18.     @file_name = "" # 记录已经打开文件名称
  19.     @line_label = "" # 记录行号标签
  20.     @is_open = false # 用于记录文件是否打开
  21.     @txt_file = nil # 用于打开文件
  22.     @t = nil # 记录每行文字
  23.     @p = 0 #记录行号
  24.   end
  25.   #--------------------------------------------------------------------------
  26.   # ● 打开文件
  27.   #--------------------------------------------------------------------------
  28.   def open(file_name,line_label="",reload=false)
  29.    
  30.     # 文件名改变的时候,或者文件没有打开的时候打开文件
  31.     if (file_name != @file_name) or !@is_open or reload
  32.       
  33.       #文件已经打开的时候首先关闭文件
  34.       if @is_open
  35.         @txt_file.close
  36.       end
  37.         
  38.       # 测试文本文件是否存在
  39.       if !FileTest.exist?("Text/" + file_name + ".txt")
  40.         # 初始化变量
  41.         @file_name = ""
  42.         @line_label = ""
  43.         @is_open = false
  44.         @txt_file = nil
  45.         @t = nil
  46.         @p = 0
  47.         # 返回错误值
  48.         return(false)
  49.       end
  50.       
  51.       #如果通过了测试,说明文件存在,那么就打开它
  52.       @txt_file = File.open ("Text/" + file_name + ".txt")
  53.       #读取所有行的文字
  54.       @t=@txt_file.readlines
  55.       #把行“指针”设定为0
  56.       @p=0
  57.       
  58.       #如果行号非空
  59.       if line_label != ""
  60.           #搜索到指定的行号,直到文件结尾才结束
  61.           for @p in [email protected]
  62.               #打开下一行文字
  63.               t=@t[@p]
  64.               #当此行是行号时(左右为匹配的方括号)
  65.               if t[0,1] == "[" and t[-2,1] == "]"
  66.                   #判断是不是要找的行号
  67.                   if t == "[" + line_label + "]\n"
  68.                       #是的话说明找到了,停在下行,并退出循环
  69.                       @p+=1
  70.                       break
  71.                   end
  72.               end
  73.           end
  74.       end
  75.       
  76.       #设定变量
  77.       @file_name = file_name
  78.       @line_label = line_label
  79.       @is_open = true
  80.         
  81.     end

  82.     #行号改变的时候重新搜索行号
  83.     if line_label != @line_label
  84.    
  85.         #首先把指针移动到文件开头
  86.         @p=0
  87.         
  88.         #如果行号非空
  89.         if line_label != "" and line_label != nil
  90.             #搜索到指定的行号,直到文件结尾才结束
  91.             for @p in [email protected]
  92.                 #打开下一行文字
  93.                 t=@t[@p]
  94.                 #当此行是行号时(左右为匹配的方括号)
  95.                 if t[0,1] == "[" and t[-2,1] == "]"
  96.                     #判断是不是要找的行号
  97.                     if t == "[" + line_label + "]\n"
  98.                         #是的话说明找到了,停在下行,并退出循环
  99.                         @p+=1
  100.                         break
  101.                     end
  102.                 end
  103.             end
  104.         end
  105.            
  106.         #设定变量
  107.         @line_label = line_label
  108.         @is_open = true
  109.         
  110.     end
  111.    
  112.     return(true)
  113.    
  114.   end
  115.   #--------------------------------------------------------------------------
  116.   # ● 关闭文件
  117.   #--------------------------------------------------------------------------
  118.   def close
  119.     @txt_file.close
  120.     @is_open=false
  121.   end
  122.   #--------------------------------------------------------------------------
  123.   # ● 读入一行文字,文件已结束返回"[END]"
  124.   #--------------------------------------------------------------------------
  125.   def get_text(len=4)
  126.    
  127.     t="" # 临时变量
  128.     s="" # 返回值
  129.     l=0 # 已打开的行数
  130.    
  131.     #如果文件已经关闭,直接返回结束标志
  132.     if !@is_open
  133.         return("\\~\\/[END]")
  134.     end
  135.    
  136.     #如果文件已经读到了末尾
  137.     if @p>[email protected]
  138.         #关闭文件
  139.         @txt_file.close
  140.         #设置标志变量
  141.         @is_open = false
  142.         #返回结束标志
  143.         return("\\~\\/[END]")
  144.     end
  145.       
  146.     #打开一行文字
  147.     t=@t[@p]
  148.     #读入字符串,终止条件是文件结束、遇到行号或者已经打开需要行数的文字
  149.     while l<len
  150.         #否则的话就加入到字符串s末尾
  151.         s = s + t
  152.         #l自增
  153.         l += 1
  154.         #@p自增
  155.         @p += 1
  156.         #打开一行文字
  157.         t=@t[@p]
  158.         #当下行是行号(左右为匹配的方括号)或者已经结束时退出,否则就会进入下次循环
  159.         if t==nil or (t[0,1] == "[" and t[-2,1] == "]")
  160.           #加入"[END]"到字符串s末尾
  161.           s = s + "[END]"
  162.           #关闭文件
  163.           @txt_file.close
  164.           #设置标志变量
  165.           @is_open = false
  166.           #终止循环
  167.           break
  168.         end
  169.     end
  170.    
  171.     if s.size > 0
  172.       #字符串非空的时候返回字符串
  173.       return s
  174.     else
  175.       #否则可能是文件结束了所以返回结束标志
  176.       return "\\~\\/[END]"
  177.     end
  178.       
  179.   end
  180. end
复制代码
输入法大概是搜狗?

点评

只能用搜狗输入法?  发表于 2012-7-1 13:36
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-25 20:11

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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