What is the difference between
//
and''
here?123.to_s.split(//) #=> ["1", "2", "3"] 123.to_s.split('') #=> ["1", "2", "3"]
Both give the same result.
What is
//
for?
What is the difference between //
and ''
here?
123.to_s.split(//) #=> ["1", "2", "3"]
123.to_s.split('') #=> ["1", "2", "3"]
Both give the same result.
What is //
for?
问题1: ''
代表空字符串,而//
代表空正则表达式:
2.0.0p247 :001 > ''.class
# => String
2.0.0p247 :002 > //.class
# => Regexp
String#split
可以接受字符串和正则表达式对象作为分隔符。由于将一个空字符串添加到字符串中不会改变该字符串,因此该字符串可以被视为'1' + '' + '2' + '' + '3'
。因此,使用空字符串进行拆分将把原始字符串拆分成单个字符。split
也会在每个字符处进行拆分。这就是它们具有相同结果的原因。
Q2我想不出(有吗?)空正则表达式的许多用途 :)
编辑:@sawa是正确的。已经更新。1. ''
是一个字符串,//
是一个正则表达式。
字符串中相邻字符的任何位置都可以假定隐式包含 ''
。换句话说,在字符串中的某个位置添加 ''
不会改变字符串的内容:
'' + 'foo' # => 'foo'
'foo' + '' + 'bar' # => 'foobar'
'foo' + 'bar' # => 'foobar'
'foo' + '' # => 'foo'
'abc'
可以被认为是'a'
+''
+'b'
+''
+'c'
,因此,通过''
来分割'abc'
会得到['a','b','c']
。//
。 因此,通过//
来分割'abc'
会得到['a','b','c']
。//
可能没有用处,但正则表达式通常是有用的,并且没有特别禁止使用//
的理由。