Project1
标题:
奇怪的字符串结合问题?
[打印本页]
作者:
冰水
时间:
2008-3-7 19:46
标题:
奇怪的字符串结合问题?
cc="mm4141321ma3214556co"
d=cc[/[m][m]\d*/].slice!(/[m][m]/)
p d =》“mm”
而
cc="mm4141321ma3214556co"
d=cc[/[m][m]\d*/]
d.slice!(/[m][m]/)
p d =>“4141321”
为什么不能直接在节选的字符串上用删除。问题出在那?
[LINE]1,#dddddd[/LINE]
版务信息:本贴由楼主自主结贴~
作者:
美兽
时间:
2008-3-8 03:38
cc="mm4141321ma3214556co"
d=cc[/\mm\d*/].slice!(/\mm/)
p d #mm
cc="mm4141321ma3214556co"
d=cc[/\mm\d*/]
f = d.slice!(/\mm/)
p f #mm
d == f
作者:
冰水
时间:
2008-3-8 04:08
两者是不同的。美兽殿^^!
我的是
d.slice!(/mm/)
p d =>“4141321”
而你的脚本是
f = d.slice!(/\mm/)
p f #mm
多了一个f=,我的是直接调用方法,所以才说结合的奇怪啊
f = d.slice!(/\mm/)
p f,d #"mm" ,“4141321”
实验
f = d.slice!(/\cde/)
p f,d #"nil","mm4141321”
这说明字符串的slice!方法去除了d匹配的部分,而f却被赋值的是匹配的返回值,而不是d去除匹配部分值
所以才说这个方法的结合似乎有些问题啊。
作者:
美兽
时间:
2008-3-8 04:17
两者是相同的,
一因为方法放在了一起,所以d得到最后一个方法slice!的返回值.
二是分开的,所以得到slice!的返回值是f.
作者:
link006007
时间:
2008-3-8 04:20
优先级
作者:
美兽
时间:
2008-3-8 04:23
哦,那我可能理解错了LZ的意图. [LINE]1,#dddddd[/LINE]
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者:
冰水
时间:
2008-3-8 04:40
重读帮助,终于理解了。
slice!(regexp)
从字符串中删除指定的范围(请参考 self[])然后返回删除的子字符串。
若参数超出范围则返回 nil。
slice!返回的居然是删除的子字符串,而不是加工过的self,一直没注意过。用gust习惯了。TT
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1