Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Find string nearest to character 250, and split

Tags:

string

ruby

So I have a really long string that's a list of TV station call letters. The CRM which I'm putting this into has a character limit of 250 per field. I've created a few fields as a result. I'd like to split a string to 250 characters, then I'd like to find the last occurrence of ", "

str = "WPXN, KPXN, WCPX, WPPX, KPXD, KKPX, WBPX, WPXA, WWPX, WPXW, KPXB, WPXD, KPPX, WXPX, KPXM, WPXM, WVPX, KPXC, WOPX, KSPX, KPXG, KPXG-LD, WINP, WIPX, WRPX, WFPX, WNPX, WHPX, KPXE, KUPX, WPXE, KPXL, WPXP, WZPX, WPXH, WPXV, KOPX, WGPX, WPXC, WPXJ-LP, WPXX, WPXJ, WPXQ, WPXL, WQPX, WYPX, WPXK, KTPX, WUPX, WLPX, WPXR, KFPX, KPXO, WSPX, KPXR, WEPX, WTPX"

str[0...250]
# returns "WPXN, KPXN, WCPX, WPPX, KPXD, KKPX, WBPX, WPXA, WWPX, WPXW, KPXB, WPXD, KPPX, WXPX, KPXM, WPXM, WVPX, KPXC, WOPX, KSPX, KPXG, KPXG-LD, WINP, WIPX, WRPX, WFPX, WNPX, WHPX, KPXE, KUPX, WPXE, KPXL, WPXP, WZPX, WPXH, WPXV, KOPX, WGPX, WPXC, WPXJ-LP, WPXX"

# leftover_string = do something here
# returns ", WPXX"

appropriate_length_string = str[0...250].chomp(leftover_string)
longer_string = str[251..-1]
longer_string.insert(leftover_string + ", ",0)
# recusrively run until all strings are in an array or something.

Make sense? I don't know how to do the "do something here" part.

like image 912
RandallB Avatar asked Feb 08 '26 02:02

RandallB


1 Answers

Using regular expression (String#[regexp]):

str[0,250][/,[^,]*$/]
# => ", WPXX"

using String#rindex:

s = str[0,250]
s[s.rindex(',')..-1]
# => ", WPXX"

Alternative that use String#rpartition suggested by Cary Swoveland:

str[0,250].rpartition(',')[1..2].join
# => ", WPXX"
like image 116
falsetru Avatar answered Feb 12 '26 05:02

falsetru