Splitting a string on to several different lines in Java

I have a very long string consisting of words punctuation and spaces. I am trying to modify the string to add a new line (\n) after every x characters but while preserving whole words. For example:

An evil human sprayed innocent students in the face with pepper spray

With x = 20 would output like this:

An evil human sprayed      21 chars
innocent students in       20 chars
the face with pepper       20 chars
spray                      end of string

If words would be split by inserting a \n after x characters, then the word should be allowed to stay on the line, while a new line would be inserted at the end of the word.

Is there a catch-all way of doing this without a whole lot of complicated code?

Answers


I would write:

s = s.replaceAll("(.{20,}?)\\s+", "$1\n");

This will find every instance of at least twenty non-newline characters, followed by one or more whitespace characters, and replace the whitespace with a newline. Or, to make x decidable at run-time (rather than hard-coded as 20), I'd write:

s = s.replaceAll("(.{" + x + ",}?)\\s+", "$1\n");

Take a look at the Apache commons lang library, in particular WordUtils#wrap().


Need Your Help

Pass Value/Variable to Dtsx /SET \Package.Variables;“value” ERROR

batch-file ssis flat-file

I want pass a value to ssis package, but i have an error back

Prompt user to replace certain parts of text in a string

javascript regex actionscript-3 air

I have a program that allows a user to type JavaScript in a textbox, and it executes in an HTML viewer or iframe. There is a drop down with options such as "Insert Image", which inserts

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.