找到最接近字符 250 的字符串,然后拆分



所以我有一个很长的字符串,是电视台呼号的列表。我将其放入的CRM每个字段的字符限制为250。因此,我创建了几个字段。我想将字符串拆分为 250 个字符,然后我想找到最后一个出现的", "

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.

有意义?我不知道如何做"在这里做点什么"部分。

使用正则表达式 ( String#[regexp] ):

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

使用String#rindex

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

Cary Swoveland建议String#rpartition替代方法:

str[0,250].rpartition(',')[1..2].join
# => ", WPXX"

我认为你必须循环或递归。这是一个快速循环示例,很可能可以改进。

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"
chunk_size = 30
pos1 = 0
pos2 = pos1 + chunk_size
result = []
while pos2 < str.size do
  pos2 = str[pos1..pos2].rindex(",") + pos1
  result << str[pos1..pos2].strip
  pos1 = pos2 + 1
  pos2 += chunk_size
  result << str[pos1..pos2].strip if pos2 > str.size
end
p result

最新更新