public class Random:System.Random
{
/// <summary>
/// Creates a Lorem Ipsum sentence.
/// </summary>
/// <param name="NumberOfWords">Number of words for the sentence</param>
/// <returns>A string containing Lorem Ipsum text</returns>
public string NextLoremIpsum(
int NumberOfWords)
{
StringBuilder Builder =
new StringBuilder();
Builder.Append(StringHelper.ToFirstCharacterUpperCase(Words[Next(Words.Length)]));
for (
int x = 1; x < NumberOfWords; ++x)
{
Builder.Append(" " + Words[Next(Words.Length)]);
}
Builder.Append(".");
return Builder.ToString();
}
/// <summary>
/// Creates a Lorem Ipsum paragraph.
/// </summary>
/// <param name="NumberOfParagraphs">Number of paragraphs</param>
/// <param name="MaxSentenceLength">Maximum sentence length</param>
/// <param name="MinSentenceLength">Minimum sentence length</param>
/// <param name="NumberOfSentences">Number of sentences per paragraph</param>
/// <returns>A string containing Lorem Ipsum text</returns>
public string NextLoremIpsum(
int NumberOfParagraphs,
int NumberOfSentences,
int MinSentenceLength,
int MaxSentenceLength,
bool HTMLFormatting)
{
StringBuilder Builder =
new StringBuilder();
if (HTMLFormatting)
Builder.Append("<p>");
Builder.Append("Lorem ipsum dolor sit amet. ");
for (
int y = 0; y < NumberOfSentences; ++y)
{
Builder.Append(NextLoremIpsum(Next(MinSentenceLength, MaxSentenceLength)) + " ");
}
if (HTMLFormatting)
Builder.Append("</p>");
for (
int x = 1; x < NumberOfParagraphs; ++x)
{
if (HTMLFormatting)
Builder.Append("<p>");
for (
int y = 0; y < NumberOfSentences; ++y)
{
Builder.Append(NextLoremIpsum(Next(MinSentenceLength, MaxSentenceLength)) + " ");
}
if (HTMLFormatting)
Builder.Append("</p>");
else
Builder.Append(System.Environment.NewLine + System.Environment.NewLine);
}
return Builder.ToString();
}
private string[] Words =
new string[] { "consetetur", "sadipscing", "elitr", "sed", "diam", "nonumy", "eirmod",
"tempor", "invidunt", "ut", "labore", "et", "dolore", "magna", "aliquyam", "erat", "sed", "diam", "voluptua",
"at", "vero", "eos", "et", "accusam", "et", "justo", "duo", "dolores", "et", "ea", "rebum", "stet", "clita",
"kasd", "gubergren", "no", "sea", "takimata", "sanctus", "est", "lorem", "ipsum", "dolor", "sit", "amet",
"lorem", "ipsum", "dolor", "sit", "amet", "consetetur", "sadipscing", "elitr", "sed", "diam", "nonumy", "eirmod",
"tempor", "invidunt", "ut", "labore", "et", "dolore", "magna", "aliquyam", "erat", "sed", "diam", "voluptua",
"at", "vero", "eos", "et", "accusam", "et", "justo", "duo", "dolores", "et", "ea", "rebum", "stet", "clita",
"kasd", "gubergren", "no", "sea", "takimata", "sanctus", "est", "lorem", "ipsum", "dolor", "sit", "amet",
"lorem", "ipsum", "dolor", "sit", "amet", "consetetur", "sadipscing", "elitr", "sed", "diam", "nonumy", "eirmod",
"tempor", "invidunt", "ut", "labore", "et", "dolore", "magna", "aliquyam", "erat", "sed", "diam", "voluptua",
"at", "vero", "eos", "et", "accusam", "et", "justo", "duo", "dolores", "et", "ea", "rebum", "stet", "clita",
"kasd", "gubergren", "no", "sea", "takimata", "sanctus", "est", "lorem", "ipsum", "dolor", "sit", "amet", "duis",
"autem", "vel", "eum", "iriure", "dolor", "
in", "hendrerit", "
in", "vulputate", "velit", "esse", "molestie",
"consequat", "vel", "illum", "dolore", "eu", "feugiat", "nulla", "facilisis", "at", "vero", "eros", "et",
"accumsan", "et", "iusto", "odio", "dignissim", "qui", "blandit", "praesent", "luptatum", "zzril", "delenit",
"augue", "duis", "dolore", "te", "feugait", "nulla", "facilisi", "lorem", "ipsum", "dolor", "sit", "amet",
"consectetuer", "adipiscing", "elit", "sed", "diam", "nonummy", "nibh", "euismod", "tincidunt", "ut", "laoreet",
"dolore", "magna", "aliquam", "erat", "volutpat", "ut", "wisi", "enim", "ad", "minim", "veniam", "quis",
"nostrud", "exerci", "tation", "ullamcorper", "suscipit", "lobortis", "nisl", "ut", "aliquip", "ex", "ea",
"commodo", "consequat", "duis", "autem", "vel", "eum", "iriure", "dolor", "
in", "hendrerit", "
in", "vulputate",
"velit", "esse", "molestie", "consequat", "vel", "illum", "dolore", "eu", "feugiat", "nulla", "facilisis", "at",
"vero", "eros", "et", "accumsan", "et", "iusto", "odio", "dignissim", "qui", "blandit", "praesent", "luptatum",
"zzril", "delenit", "augue", "duis", "dolore", "te", "feugait", "nulla", "facilisi", "nam", "liber", "tempor",
"cum", "soluta", "nobis", "eleifend", "option", "congue", "nihil", "imperdiet", "doming", "id", "quod", "mazim",
"placerat", "facer", "possim", "assum", "lorem", "ipsum", "dolor", "sit", "amet", "consectetuer", "adipiscing",
"elit", "sed", "diam", "nonummy", "nibh", "euismod", "tincidunt", "ut", "laoreet", "dolore", "magna", "aliquam",
"erat", "volutpat", "ut", "wisi", "enim", "ad", "minim", "veniam", "quis", "nostrud", "exerci", "tation",
"ullamcorper", "suscipit", "lobortis", "nisl", "ut", "aliquip", "ex", "ea", "commodo", "consequat", "duis",
"autem", "vel", "eum", "iriure", "dolor", "
in", "hendrerit", "
in", "vulputate", "velit", "esse", "molestie",
"consequat", "vel", "illum", "dolore", "eu", "feugiat", "nulla", "facilisis", "at", "vero", "eos", "et", "accusam",
"et", "justo", "duo", "dolores", "et", "ea", "rebum", "stet", "clita", "kasd", "gubergren", "no", "sea",
"takimata", "sanctus", "est", "lorem", "ipsum", "dolor", "sit", "amet", "lorem", "ipsum", "dolor", "sit",
"amet", "consetetur", "sadipscing", "elitr", "sed", "diam", "nonumy", "eirmod", "tempor", "invidunt", "ut",
"labore", "et", "dolore", "magna", "aliquyam", "erat", "sed", "diam", "voluptua", "at", "vero", "eos", "et",
"accusam", "et", "justo", "duo", "dolores", "et", "ea", "rebum", "stet", "clita", "kasd", "gubergren", "no",
"sea", "takimata", "sanctus", "est", "lorem", "ipsum", "dolor", "sit", "amet", "lorem", "ipsum", "dolor", "sit",
"amet", "consetetur", "sadipscing", "elitr", "at", "accusam", "aliquyam", "diam", "diam", "dolore", "dolores",
"duo", "eirmod", "eos", "erat", "et", "nonumy", "sed", "tempor", "et", "et", "invidunt", "justo", "labore",
"stet", "clita", "ea", "et", "gubergren", "kasd", "magna", "no", "rebum", "sanctus", "sea", "sed", "takimata",
"ut", "vero", "voluptua", "est", "lorem", "ipsum", "dolor", "sit", "amet", "lorem", "ipsum", "dolor", "sit",
"amet", "consetetur", "sadipscing", "elitr", "sed", "diam", "nonumy", "eirmod", "tempor", "invidunt", "ut",
"labore", "et", "dolore", "magna", "aliquyam", "erat", "consetetur", "sadipscing", "elitr", "sed", "diam",
"nonumy", "eirmod", "tempor", "invidunt", "ut", "labore", "et", "dolore", "magna", "aliquyam", "erat", "sed",
"diam", "voluptua", "at", "vero", "eos", "et", "accusam", "et", "justo", "duo", "dolores", "et", "ea",
"rebum", "stet", "clita", "kasd", "gubergren", "no", "sea", "takimata", "sanctus", "est", "lorem", "ipsum" };
}
The first class is the actual random Lorem Ipsum generator and there are two options. The first simply generates a sentence. The second actually generates a number of paragraphs. It uses, for the most part, proper capitalization but punctuation is hit or miss (let alone the fact that each word is random so if you know Latin, the sentences will definately be nonsensical). Also, the word list I was lucky enough to find here. I would have used his code as well but it didn't offer the flexibility that I wanted (nor the html markup). The second class is simply a string helper function. It takes the first letter in the input string and capitalizes it. That's all the function is there for. Anyway, I hope this helps out someone. So try it out, leave feedback, and happy coding.