Project1

标题: 关于截取字符串的代码,谁能帮我解决下bug [打印本页]

作者: 沉滞的剑    时间: 2013-4-16 14:40
标题: 关于截取字符串的代码,谁能帮我解决下bug
本帖最后由 沉滞的剑 于 2013-4-16 16:06 编辑

RUBY 代码复制
  1. $perks = []
  2. class Perk
  3.   attr_accessor :index
  4.   attr_accessor :name
  5.   attr_accessor :note
  6.   attr_accessor :fatherid
  7.   attr_accessor :description
  8. ##=============================================================================
  9. def finding (tag)
  10.    a = @note.index(tag)
  11.    a = a + tag.size unless a == nil
  12.    b = @note.index("!",a-1) unless a == nil
  13.    c = @note[a..b-1].to_i unless a == nil or b == nil
  14.    return c
  15. end
  16.   def finding_s (tag)
  17.     a = @note.index(tag)
  18.     p a = a + tag.size unless a == nil
  19.     p b = @note.index("!",a+1) unless a == nil
  20.     p c = @note[a,b].to_s unless a = nil or b == nil
  21.    return c
  22. end
  23. ##=============================================================================
  24.   def initialize (index,name,note)
  25.     @index = index
  26.     @name = name
  27.     p @note = note
  28.     @fatherid = finding("<f>")
  29.     @description = finding_s("<d>")
  30.   end
  31.   def self.setup
  32.   for i in $data_skills
  33.     if i != nil
  34.       b = i.name
  35.       a = i.id
  36.       c = i.note
  37.       $perks[a]= Perk.new(a,b,c)
  38.     end  
  39.   end
  40. end
  41. end



作者: ljyinvader    时间: 2013-4-16 15:11
s = "12321"
p s[1,3]

正则表达式只是用来匹配特定形式的字符串,跟你说的截取无关,具体看vx版帮助吧
作者: 沙漠点灰    时间: 2013-4-16 18:06
用正则表达式吧..这头都大了{:2_270:}

@note[/*\[f:(\d+)\]*/]可以匹配[f:5]
就是fatherid 可以设为 5了
  1. if @note[/*\[f:(\d+)\]*/]
  2.   @fatherid = $1.to_i
  3. else
  4.   # 匹配不成功时
  5. end
复制代码
最重要的是这支持中文,截取字节的话,中文很麻烦
作者: SuperMario    时间: 2013-4-18 16:18
本帖最后由 SuperMario 于 2013-4-18 16:55 编辑

@沉滞的剑 ,没注意到你还需要读取数据~
那还是使用正则表达式更方便,这块我也不太清楚,我一般是这样用:
  1. /(f:)(\d+)/ =~ "d:13 f:12 e:"
  2. p $1 # "f:" 第一次匹配成功的值
  3. p $2 # "12" 第二次
复制代码





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1