Sorry if this is a bit late, FWIW...
1) Most of the replies published (well, those that work :-) truncate strings that are exactly of the desired length, while your original version keeps these intact. Test case:
my $str = trim_length ( 'this sentence is 30 signs long', 30 );If you use eg BrowserUK's code, this is easy to fix: just change
return $str if length $str < $n;to:
return $str if length $str <= $n;2) It might be an idea to strip off trailing whitespace, in order to avoid adding ' ...' to the end of a message that is essentially complete. My own solution, again FWIW, would be
sub trim_length { my ( $str, $desired_len ) = @_; $str =~ s/\s+$//; # Strip trailing whitespace return $str if length $str <= $desired_len; return sprintf "%.${desired_len}s ...", substr $str, 0, ( rindex $str, ' ', $desired_len ); }
dave
In reply to Re: In search of a better way to trim string
by Not_a_Number
in thread In search of a better way to trim string
by kiat
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |