How to split string into paragraphs using first comma?

前端 未结 4 464
谎友^
谎友^ 2021-02-05 01:30

I have string: @address = \"10 Madison Avenue, New York, NY - (212) 538-1884\" What\'s the best way to split it like this?

10 Madison Avenu

相关标签:
4条回答
  • 2021-02-05 02:16

    Even though @address.split(",",2) is correct. Running a benchmark for split, partition and a regex solution such as @adress.match(/^([^,]+),\s*(.+)/) showed that partition is a bit better than split.

    On a 2,6 GHz Intel Core i5, 16 GB RAM computer and 100_000 runs: user system total real partition 0.690000 0.000000 0.690000 ( 0.697015) regex 1.910000 0.000000 1.910000 ( 1.908033) split 0.780000 0.010000 0.790000 ( 0.788240)

    0 讨论(0)
  • 2021-02-05 02:20
    break_at = @address.index(",") + 1
    result = "<p>#{@address[0, break_at]}</p><p>#{@address[break_at..-1].strip}</p>"
    
    0 讨论(0)
  • 2021-02-05 02:28

    rather:

    break_at = @address.index(", ")
    result = "<p>#{@address[0, break_at+1]}</p><p>#{@address[break_at+1..-1]}</p>"
    
    0 讨论(0)
  • 2021-02-05 02:31

    String#split has a second argument, the maximum number of fields returned in the result array: http://ruby-doc.org/core/classes/String.html#M001165

    @address.split(",", 2) will return an array with two strings, split at the first occurrence of ",".

    the rest of it is simply building the string using interpolation or if you want to have it more generic, a combination of Array#map and #join for example

    @address.split(",", 2).map {|split| "<p>#{split}</p>" }.join("\n")
    
    0 讨论(0)
提交回复
热议问题