所以我有一个非常长的字符串,这是一个电视台电话信件列表。我把它放入的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.
有意义吗?我不知道如何做“在这里做点什么”的部分。
答案 0 :(得分:1)
使用正则表达式(String#[regexp]
):
str[0,250][/,[^,]*$/]
# => ", WPXX"
s = str[0,250]
s[s.rindex(',')..-1]
# => ", WPXX"
使用Cary Swoveland建议的String#rpartition
替代方案:
str[0,250].rpartition(',')[1..2].join
# => ", WPXX"
答案 1 :(得分:0)
我认为你必须循环或递归。这是一个很有可能得到改进的快速循环示例。
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