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特定的正则表达式
    /
    可能没有用处,但正则表达式通常是有用的,没有理由特别禁止
    /

    啊-这更有意义:)