On 04/25/2011 12:02 PM, Josh Cheek wrote:
> On Mon, Apr 25, 2011 at 1:51 PM, Joel VanderWerf
> <joelvanderwerf / gmail.com>wrote:
>
>> On 04/25/2011 11:44 AM, Michelle Pace wrote:
>>
>>> Hello, I need to make the first string below into the second string.
>>> That is, only single white spaces are permitted.
>>>
>>> "1/4 WELDING    LEVER FRONT DRW 14844-C  MAT  WMA1CM-WLFRONT"
>>> into
>>> "1/4 WELDING LEVER FRONT DRW 14844-C MAT WMA1CM-WLFRONT"
>>>
>>>
>>>
>>> I want to use the sub! method. Why does the below code not work? Is my
>>> pattern incorrect?
>>>
>>> descrip = "1/4 WELDING    LEVER FRONT DRW 14844-C  MAT  WMA1CM-WLFRONT"
>>> descrip.sub!(/\s+/,' ')
>>> puts descrip
>>>
>>
>> sub! only affects the *first* match. You can substitute globally with gsub.
>> Also you might as well only match 2 or more spaces:
>>
>> descrip.gsub!(/\s\s+/,' ')
>>
>>
>
> I think the original regex is better, because leads to more consistent
> results:
>
> "hello\tworld    !".gsub(/\s\s+/,' ') # =>  "hello\tworld !"
> "hello\tworld    !".gsub(/\s+/,' ')   # =>  "hello world !"
>

Good point, but it depends on what you're trying to be consistent with. 
Maybe the goal is to squeeze space, but preserve tab layout for readability.