2011-03-09 57 views
51

我们的应用程序是从使用Twitter登录的人挖掘名称。如何将字符串拆分成只有两个部分与Ruby中的给定字符?

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

实例

1. "Froederick Frankenstien" 
2. "Ludwig Van Beethoven" 
3. "Anne Frank" 

我想的字符串分割成仅发现瓦尔基于第一" "(空格)(firstlast)。

Example First Name Last Name 
1   Froederick Frankenstein 
2   Ludwig  Van Beethoven 
3   Anne   Frank 

我熟悉String#split,但我不知道如何分割只有一次。 Ruby-Way™(优雅)答案将被接受。

+0

即 ''' “贝多芬” .split(””,2) [ “路德维希·范”, “贝多芬”] ''' 没有看到一个rsplit – Justin 2016-08-10 21:43:43

+0

好像你'字符串#split'可能已经被猴子修补过了或者什么的。看到这里:[repl.it:Clqa](https://repl.it/Clqa) – naomik 2016-08-10 21:47:09

+0

感谢您的回应。我正在寻找一个本机解决方案,以说明我在实施自己之前所说的行为。目前我获得标准[“路德维希”,“范贝多芬”]。 – Justin 2016-08-11 11:54:50

回答

128

String#split接受第二个参数,即极限。

str.split(' ', 2) 

应该这样做。

+3

我想**我不熟悉(足够)'String#split'。谢谢:) – naomik 2011-03-09 23:12:57

+0

很不错的,我不知道split接受第二个参数 – jordelver 2013-04-12 11:11:48

+0

即 ''' “贝多芬” .split(””,2) [ “路德维希·范”, “贝多芬”] ''' 没有看到rsplit – Justin 2016-08-10 21:44:38

12
"Ludwig Van Beethoven".split(' ', 2) 

第二个参数限制您想要将其拆分成的数量。

你也可以这样做:

"Ludwig Van Beethoven".partition(" ") 
+1

'split'和'分区'有不同的结果:''abc“.split(”“,2)#=> [”a“,”bc“]; “a b c”.partition(“”)#=> [“a”,“”,“b c”]' – Dorian 2017-03-14 18:25:52

8

.split()第二个参数指定了多少分割做:

'one two three four five'.split(' ', 2) 

和输出:

>> ruby -e "print 'one two three four five'.split(' ', 2)" 
>> ["one", "two three four five"] 
7

备选:

first= s.match(" ").pre_match 
    rest = s.match(" ").post_match 
+0

如果未找到匹配项,则会发出错误(无) – montrealmike 2015-12-16 15:27:44

相关问题