Applying Style to Plain Text Dynamically
By AzamSharp
Views: 1741

Applying Style to Plain Text Dynamically

Introduction:

There are lot of situations when you have a plain text file and you want to apply certain styles to text and display to the user. In this small example we will take a look at the exam questions file which will contain few questions and we will apply styles to that plain file and display it to the user.

Plain Text File:

Here is the simple text file which consists of questions:

1) What is your name?

a) AzamSharp

*b) Mohammad Azam

c) Azim

d) Aziz

2) What is your pet name?

a) chitta

b) bonco

*c) coco

d) billi

3) What is your city?

a) Houston

b) Austin

*c) Boston

d) San antonio

 

The correct answer are represented by '*' following the choices. We will assume that user has given the test and he wants to see the correct answers after the test.

Applying HTML Tags to Plain Text File:

I have created a small class SharpFormat.cs which will apply the styles to the plain text. The complete code for the class is given below:

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using System.IO;

using System.Text;

 

public class SharpFormat

{

public const string TABLE_BEGIN_TAG = @"<table name=""myTable"" border=""2"">";

public const string TABLE_END_TAG = @"</table>";

public const string TR_OPEN_TAG = @"<tr><td>";

public const string TR_CLOSE_TAG = @"</td></tr>";

public const string TR_OPEN_TAG_COLOR = @"<tr bgcolor=""green""><td>";

public SharpFormat()

{

}

// This method formats the text and sends back the formatted text

public static string FormatText(string fileName)

{

FileStream fileStream = File.OpenRead(HttpContext.Current.Server.MapPath(fileName));

StreamReader reader = new StreamReader(fileStream);

string nextLine = null;

StringBuilder sb = new StringBuilder();

try

{

// Add the Table beginning tag

sb.Append(TABLE_BEGIN_TAG);

while (reader.Peek() > -1)

{

nextLine = reader.ReadLine();

if (nextLine.StartsWith("*")) // * means answer

{

sb.Append(TR_OPEN_TAG_COLOR);

sb.Append(nextLine);

sb.Append(TR_CLOSE_TAG);

}

else

{

sb.Append(TR_OPEN_TAG);

sb.Append(nextLine);

sb.Append(TR_CLOSE_TAG);

}

}

}

finally

{

reader.Close();

fileStream.Close();

}

sb.Append(TABLE_END_TAG);

return sb.ToString();

}

}

 

As you can see in the code above that all I am doing is attaching the correct HTML tags at the right time. I am using StringBuilder object to increase performance as using string concatenation will be a bad idea since strings are immutable. I read the text line by line from the file. If I found '*' that means its an answer and I apply different color to the particular row.

The output after applying the styles will look like the screenshot below:

 

As you can see the screen shot above its looks much better than displaying plain text to user with '*' representing the answer.

I hope you liked the article, happy coding!

By AzamSharp




Enter Comment/Feedback
  •  
  •  
  •  
  •  
  •  

Comments/Feedbacks

Recommended Books



Join WebHost4Life.com






Copyright GridViewGuy 2007-2008