From: georgesawyer Date: 2005-01-08T08:56:27+09:00 Subject: Re: what's the Ruby way to do this? To be frank, in my last message I was learning. Finally, I suggest this happy medium, I hope, of readability and conciseness: def tenWords string # First ten words, followed by ellipsis. p string ;return unless string # If nil. s =string.strip e =%r{ \w \b }x # Word-character immediately before word boundary ('end'). last =-1 # Start before. 10.times {return s unless last = s.index( e ,last +1)} # If result nil. s[ last +1 ...s.size] =' ...' if s.index( e ,last +1) # Another? s # Return. end p tenWords 'This is a test sentence that I just have now made up.' p tenWords 'This is a test sentence that I just now made up.' p tenWords 'This is a test sentence that I just made up.' p tenWords 'This is a test sentence that I made up.' p tenWords 'This is a test sentence I made up.' p tenWords 'This' p tenWords '' p tenWords nil __END__ #Result: =>"This is a test sentence that I just have now made up." =>"This is a test sentence that I just have now ..." =>"This is a test sentence that I just now made up." =>"This is a test sentence that I just now made ..." =>"This is a test sentence that I just made up." =>"This is a test sentence that I just made up." =>"This is a test sentence that I made up." =>"This is a test sentence that I made up." =>"This is a test sentence I made up." =>"This is a test sentence I made up." =>"This" =>"This" =>"" =>"" =>nil =>nil