【问题标题】:How to split string into only two parts with a given character in Ruby?如何在Ruby中将字符串拆分为仅具有给定字符的两部分?
【发布时间】:2011-07-12 07:49:07
【问题描述】:

我们的应用程序正在从使用 Twitter 登录的人那里挖掘姓名。

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

我对@9​​87654326@ 很熟悉,但我不确定如何只拆分一次。将接受最 Ruby-Way™(优雅)的答案。

【问题讨论】:

  • 即 ``` "Ludwig Van Beethoven".split(' ', 2) ["Ludwig Van", "Beethoven"] ``` 没有看到 rsplit
  • 感谢您的回复。我正在为我在实现自己之前所说的行为寻找一个本地解决方案。目前我得到了标准的 ["Ludwig", "Van Beethoven"]。

标签: ruby string split


【解决方案1】:
"Ludwig Van Beethoven".split(' ', 2)

第二个参数限制了你想要分割成的数量。

你也可以这样做:

"Ludwig Van Beethoven".partition(" ")

【讨论】:

  • splitpartition 有不同的结果:"a b c".split(" ", 2) # => ["a", "b c"]; "a b c".partition(" ") # => ["a", " ", "b c"]
【解决方案2】:

替代方案:

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

【讨论】:

  • 如果没有找到匹配项(nil)会报错
【解决方案3】:

.split() 的第二个参数指定要进行多少次拆分:

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

还有输出:

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

【讨论】:

    【解决方案4】:

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

    str.split(' ', 2)
    

    应该可以解决问题。

    【讨论】:

    • 我想我对String#split熟悉(足够)。谢谢你:)
    • 很好,我不知道 split 需要第二个参数
    • 即 ``` "Ludwig Van Beethoven".split(' ', 2) ["Ludwig Van", "Beethoven"] ``` 没有看到 rsplit
    • @Justin 我可以正常工作:"a b c".split(" ", 2) # => ["a", "b c"]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2017-04-29
    • 2012-06-24
    相关资源
    最近更新 更多