Word wrap line break code and algorithm for c#

  • Thread starter Jason Coyne Gaijin42
  • Start date
J

Jason Coyne Gaijin42

Here is a little word wrap function I whipped up today. It suports a
variable line length, and text inside an html tag is not counted.
(This is so you can display text that contains HTML, without the tag
itself counting against the line length, since the tag is not
displayed to the user)

I hope you find it useful.

Sorry about the formatting, usenet alwasy messes up my code. When you
paste this into Visual Studio, it should fix the indenting for you
automagically.

public static string[] Wrap(string text, int maxLength)
{
text = text.Replace("\n", " ");
text = text.Replace("\r", " ");
text = text.Replace(".", ". ");
text = text.Replace(">", "> ");
text = text.Replace("\t", " ");
text = text.Replace(",", ", ");
text = text.Replace(";", "; ");
text = text.Replace("<br>", " ");
text = text.Replace(" ", " ");

string[] Words = text.Split(' ');
int currentLineLength = 0;
ArrayList Lines = new ArrayList(text.Length / maxLength);
string currentLine = "";
bool InTag = false;

foreach (string currentWord in Words)
{
//ignore html
if (currentWord.Length > 0)
{

if (currentWord.Substring(0,1) == "<")
InTag = true;

if (InTag)
{
//handle filenames inside html tags
if (currentLine.EndsWith("."))
{
currentLine += currentWord;
}
else
currentLine += " " + currentWord;

if (currentWord.IndexOf(">") > -1)
InTag = false;
}
else
{
if (currentLineLength + currentWord.Length + 1 < maxLength)
{
currentLine += " " + currentWord;
currentLineLength += (currentWord.Length + 1);
}
else
{
Lines.Add(currentLine);
currentLine = currentWord;
currentLineLength = currentWord.Length;
}
}
}

}
if (currentLine != "")
Lines.Add(currentLine);

string[] textLinesStr = new string[Lines.Count];
Lines.CopyTo(textLinesStr, 0);
return textLinesStr;


}
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,576
Members
45,054
Latest member
LucyCarper

Latest Threads

Top