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

Project1

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

[已经过期] 请教下sub!的用法

[复制链接]

Lv1.梦旅人

梦石
0
星屑
52
在线时间
586 小时
注册时间
2012-5-31
帖子
768
跳转到指定楼层
1
发表于 2013-8-8 19:09:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 wwwcctvty 于 2013-8-8 20:59 编辑

info.sub!(/(a=)(.+)$/i){""}请高手帮解释下
如果要把文本内容:“a=1,2,3,\n4,5\nb=1,2,3,\n4,5\nc=1,2,\n3”
转换成三个数组:
[1,2,3,4,5]
[1,2,3,4]
[1,2,3]
应该怎样写

点评

@弗雷德 呼叫熊哥  发表于 2013-8-8 20:42

Lv2.观梦者 (暗夜天使)

万兽

梦石
0
星屑
597
在线时间
2271 小时
注册时间
2006-11-4
帖子
4868

贵宾

6
发表于 2013-8-9 12:32:06 | 只看该作者
没@到,另外正则表达式莫问俺,各种符号自己也是看的云里雾里的,俺能想到的就是用gusb \D/ 什么的先空字符匹配掉字母换行符什么,之后重新在=前插入换行符,最后逐一读取,虽然麻烦,但能实现,sub的话,F1里没有详细的介绍,一直不懂怎么用。
最后:俺美工技能练的比较高,脚本的算法、网络相关、文件结构神马的都还没学到。

点评

感谢熊哥过来解答,话说熊哥又换头像了  发表于 2013-8-9 12:41
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
52
在线时间
586 小时
注册时间
2012-5-31
帖子
768
5
 楼主| 发表于 2013-8-9 12:01:01 | 只看该作者
Algalon 发表于 2013-8-9 02:47
简单的说就是你只要记住"//"里是要匹配的内容,也就是匹配"a="这个string,"//"外称为modifier你可以把它看 ...


可不可以让它匹配到指定字符
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
141 小时
注册时间
2013-8-6
帖子
114
4
发表于 2013-8-9 02:47:22 | 只看该作者
简单的说就是你只要记住"//"里是要匹配的内容,也就是匹配"a="这个string,"//"外称为modifier你可以把它看成一个特殊匹配标记,这里i表示忽略大小写。
美元号$的意思是匹配行末,也就是说只要在 a= 之后发现行末就停止匹配。用括号括起来的称为捕捉,捕捉的内容可以被当成组(array)来使用。这边捕捉的是a=和紧跟a=之后的那个词。
例如你的string是a=5,那么(a=)捕捉a=,而(.+)捕捉5。要注意+号表示a=后至少必须有一个跟随,也就是说如果捕捉对象是"a="那么返回的就是nil nil
你可以试试:
line_sub = Proc.new {|capture| capture.sub! (/(a=)(.+)$/i) {""}}
str1, str2 = line_sub.call ("a=5")

p str1
p str2

--> ""
--> nil

点评

据我所知在使用match的时候是这样,匹配在遇到\n的情况下自动终止,sub我还没有试过  发表于 2013-8-9 10:08
是不是就是说,换行后的字符是读取不到的?  发表于 2013-8-9 08:07
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
141 小时
注册时间
2013-8-6
帖子
114
3
发表于 2013-8-8 23:21:13 | 只看该作者
建议先去学下ruby的正则式。sub!用法很简单,跟sub一样如果后面跟一个正则式一个block那么在call block的时候把你要替换的string里匹配正则式中的内容用block里的string替换掉,然后返回一个新的string。唯一的区别是sub!在未替换(也就是不包含)的时候将会返回nil

点评

(.+)$/i 这里我看不大懂呀,请大大解释一二  发表于 2013-8-8 23:40
回复 支持 反对

使用道具 举报

Lv3.寻梦者

可以吃的头衔

梦石
0
星屑
1000
在线时间
423 小时
注册时间
2010-10-17
帖子
602
2
发表于 2013-8-8 20:57:26 | 只看该作者
你先确定n前面是不是反斜杠

点评

太抱歉了,打错了、、、、已经改过,请帮看下  发表于 2013-8-8 21:00
……
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-11 05:05

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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