Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re: In search of a better way to trim string

by Not_a_Number (Parson)
on Jul 19, 2004 at 19:21 UTC ( #375662=note: print w/ replies, xml ) Need Help??


in reply to In search of a better way to trim string

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


Comment on Re: In search of a better way to trim string
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://375662]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (6)
As of 2014-11-23 14:44 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My preferred Perl binaries come from:














    Results (132 votes), past polls