"//"和''的区别是什么?"

3
  1. 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.

  2. What is // for?

2个回答

4

问题1: ''代表空字符串,而//代表空正则表达式:

2.0.0p247 :001 > ''.class
# => String 

2.0.0p247 :002 > //.class
# => Regexp 
String#split可以接受字符串和正则表达式对象作为分隔符。由于将一个空字符串添加到字符串中不会改变该字符串,因此该字符串可以被视为'1' + '' + '2' + '' + '3'。因此,使用空字符串进行拆分将把原始字符串拆分成单个字符。
同样地,空的正则表达式匹配任何紧邻字符的位置,所以在这种情况下split也会在每个字符处进行拆分。这就是它们具有相同结果的原因。 Q2我想不出(有吗?)空正则表达式的许多用途 :) 编辑:@sawa是正确的。已经更新。

3

1. '' 是一个字符串,// 是一个正则表达式。

字符串中相邻字符的任何位置都可以假定隐式包含 ''。换句话说,在字符串中的某个位置添加 '' 不会改变字符串的内容:

'' + 'foo' # => 'foo'
'foo' + '' + 'bar' # => 'foobar'
'foo' + 'bar' # => 'foobar'
'foo' + '' # => 'foo'

因此,字符串'abc'可以被认为是'a'+''+'b'+''+'c',因此,通过''来分割'abc'会得到['a','b','c']
同样地,字符串中与字符相邻的任何位置都匹配//。 因此,通过//来分割'abc'会得到['a','b','c']
2 特定的正则表达式//可能没有用处,但正则表达式通常是有用的,并且没有特别禁止使用//的理由。

1
啊,这样就更有意义了 :) - andrewdotnich

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接