Ruby //和'之间的差异';
这里的Ruby //和'之间的差异';,ruby,Ruby,这里的/和'有什么区别 123.to_s.split(//) #=> ["1", "2", "3"] 123.to_s.split('') #=> ["1", "2", "3"] 两者的结果相同 什么是/ Q1:'是空字符串,而/是空的Regexp: 2.0.0p247 :001 > ''.class # => String 2.0.0p247 :002 > //.class # => Regexp String#split在决定拆分对象时,会同
/
和'
有什么区别
123.to_s.split(//) #=> ["1", "2", "3"]
123.to_s.split('') #=> ["1", "2", "3"]
两者的结果相同
/
Q1:
'
是空字符串,而/
是空的Regexp
:
2.0.0p247 :001 > ''.class
# => String
2.0.0p247 :002 > //.class
# => Regexp
String#split
在决定拆分对象时,会同时接受String和Regexp对象。因为向字符串中添加空字符串不会更改字符串,所以可以将该字符串视为'1'++'++'2'++'++'3'
。因此,对空字符串进行拆分会将原始字符串拆分为单个字符
类似地,空Regexp匹配字符旁边的任何位置,因此在本例中,split
也会对每个字符进行分割。这就是为什么他们有相同的结果
Q2我想不出空Regexp有多少(任何?)用途:)
编辑:@sawa是正确的。谦恭地更新。1“
是一个字符串,/
是一个正则表达式
字符串中与字符相邻的任何位置都可以假定隐式包含'
。换句话说,将''
添加到字符串中的某个位置不会更改字符串的内容:
'' + 'foo' # => 'foo'
'foo' + '' + 'bar' # => 'foobar'
'foo' + 'bar' # => 'foobar'
'foo' + '' # => 'foo'
因此,字符串'abc'
可以被视为'a'
+'
+'b'
+'
++'c'
,因此,通过'
拆分'abc'
会导致['a',b',c'
类似地,字符串中与字符相邻的任何位置都匹配/
。因此,用/
拆分'abc'
将导致['a','b','c']
2特定的正则表达式/
可能没有用处,但正则表达式通常是有用的,没有理由特别禁止/啊-这更有意义:)