File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
Win a copy of Clojure in Action this week in the Clojure forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Getting the whole last word

 
Hussein Baghdadi
clojure forum advocate
Bartender
Posts: 3479
Clojure Mac Objective C
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi.
Im my web app, I want to get the newer five books from the database and display them in the index page.
At the index page, the title of the book should be displayed and a snippet of its description (lets say, the first 100 chars of its descripton).
Good example:
This book is written by .... <link>Read More</link>
Bad example :
This book is writ .... <link>Read More</link>
Do you see the problem ?
When I substring the description text, the whole last word should be included in the snippet not part of it.
Here is my small algorithm :
- use substring(0, 150)
- if the last character is a white space, then substring (0, 151)
- repeat
Do you suggest a better solution ? :roll:
 
William Brogden
Author and all-around good cowpoke
Rancher
Posts: 13048
6
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I would convert the text description to a char[], then, starting at 150, back down the char[] looking for a good end of word indicator - space, punctuation, etc. or reaching some minimum - say 120. With that index, create a new String.

This saves all that extra String object creation and lets you use characters besides whitespace as delimiters/

Bill
 
Stan James
(instanceof Sidekick)
Ranch Hand
Posts: 8791
  • 0
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Bill's solution handles non-blank terminators. If you don't need that (and you probably do) you can find a breaking point with:

content.substring(0, maxLength).lastIndexOf(" ")

I remember doing this in a language that didn't have lastIndexOf but had reverse().
 
I agree. Here's the link: http://aspose.com/file-tools
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic