in reply to character offset to word offset

-- for failure to show even a hint that you've tried anything other than an appeal to others... and another appears likely to be deserved for homework not labeled as such.

Please see How do I post a question effectively? -- specifically, RTFM (Show Some Effort), Do Your Own Work, and About Homework.

Replies are listed 'Best First'.
Re^2: character offset to word offset
by AnomalousMonk (Archbishop) on Sep 09, 2008 at 00:08 UTC
    I share the suspicions of and disdain for homework not labeled as such expressed by others, but since several code contributions have already been made, here's mine.

    As noted above, the tricky part is defining the word regex. This should also probably be defined separately and passed to the emphasize() function rather than being hard-coded.

    perl -wMstrict -le "{ my %emphasis; my $word = qr{ (\b \w+ \b) }xms; sub emphasize { my $string = shift; %emphasis = map { $_ => 0 } @_; my $intro = qq{@{[ sort { $a <=> $b } keys %emphasis ]}}; my $words = 0; $string =~ s{ ($word) } { exists $emphasis{++$words} ? qq{**$1**} : $1 }xmsge; return qq{$intro $string}; } } my $string = 'Sam goes to school to play football.'; print emphasize($string, 4, 7); print emphasize($string, 7, 2, 4); print emphasize($string); print emphasize('the cow jumped over the', 3, 4, 1); " 4 7 Sam goes to **school** to play **football**. 2 4 7 Sam **goes** to **school** to play **football**. Sam goes to school to play football. 1 3 4 **the** cow **jumped** **over** the