From: "Michael W. Ryder" <_mwryder@...> Date: 2008-01-22T06:59:58+09:00 Subject: Re: Is there an easier way to get a match before a position in a string? William James wrote: > On Jan 21, 1:12 pm, "Michael W. Ryder" <_mwry...@worldnet.att.net> > wrote: >> I am trying to find an easier way to split a string into printable >> lines. I could use the method of checking for a space using a loop and >> going back from the desired length or I could use the following: >> >> def strbrk(str, len) >> if str.length <= len >> return str.length >> end >> tmp = str[0...len].reverse >> x = tmp =~ / / >> if x == nil >> return -1 >> else >> return len - x >> end >> end >> >> I could not find any way to get a regexp to search from the end of the >> string which would have eliminated the need to reverse the string. > > def str_break( str, len ) > str.size > len and str[0..len].rindex(' ') or str.size > end > > This is much better than my solution, I missed rindex somehow. > > str = "\ > I don't necessarily need code examples -- but if anyone has > ideas for a best approach to specifying a line wrap width > (breaking between words for lines no longer than a specific > column width) for output from a Ruby script, I'd love to > hear about it." > > X = 40 > puts str.gsub(/\n/," ").scan(/\S.{0,#{X-2}}\S(?=\s|$)|\S+/)