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