如何在Ruby中将字符串拆分为两个具有给定字符的部分?

Tha*_*you 62 ruby string split

我们的应用程序是使用Twitter登录的人员挖掘名称.

Twitter在一个字符串中提供全名.

例子

1. "Froederick Frankenstien"
2. "Ludwig Van Beethoven"
3. "Anne Frank"
Run Code Online (Sandbox Code Playgroud)

我想根据找到的第一个(空格)将字符串拆分为两个变量(firstlast)" ".

Example    First Name    Last Name 
1          Froederick    Frankenstein
2          Ludwig        Van Beethoven
3          Anne          Frank
Run Code Online (Sandbox Code Playgroud)

我很熟悉,String#split但我不确定如何只拆分一次.最接受Ruby-Way™(优雅)答案.

yan*_*yan 144

String#split接受第二个参数,即限制.

str.split(' ', 2)
Run Code Online (Sandbox Code Playgroud)

应该做的伎俩.

  • 我想我不会用`String#split`熟悉(足够).谢谢 :) (3认同)

saw*_*awa 12

"Ludwig Van Beethoven".split(' ', 2)
Run Code Online (Sandbox Code Playgroud)

第二个参数限制要将其拆分为的数字.

你也可以这样做:

"Ludwig Van Beethoven".partition(" ")
Run Code Online (Sandbox Code Playgroud)

  • `split`和`partition`具有不同的结果:`“ ab c” .split(“”,2)#=> [“ a”,“ b c”]; “ ab c” .partition(“”)#=> [“ a”,“”,“ b c”]` (2认同)

Ble*_*der 8

第二个参数.split()指定要执行的拆分数:

'one two three four five'.split(' ', 2)
Run Code Online (Sandbox Code Playgroud)

并输出:

>> ruby -e "print 'one two three four five'.split(' ', 2)"
>> ["one", "two three four five"]
Run Code Online (Sandbox Code Playgroud)


Ann*_*001 7

替代方案:

    first= s.match(" ").pre_match
    rest = s.match(" ").post_match
Run Code Online (Sandbox Code Playgroud)