Есть ли Lorem Ipsum генератор в C#?
Я ищу генератор AC#, который может генерировать случайные слова, предложения, абзацы, заданные количеством слов / абзацев и определенный синтаксис, такой как адрес, цифры, почтовый индекс / почтовый индекс, страна, номера телефонов, адрес электронной почты.
10 ответов
static string LoremIpsum(int minWords, int maxWords,
int minSentences, int maxSentences,
int numParagraphs) {
var words = new[]{"lorem", "ipsum", "dolor", "sit", "amet", "consectetuer",
"adipiscing", "elit", "sed", "diam", "nonummy", "nibh", "euismod",
"tincidunt", "ut", "laoreet", "dolore", "magna", "aliquam", "erat"};
var rand = new Random();
int numSentences = rand.Next(maxSentences - minSentences)
+ minSentences + 1;
int numWords = rand.Next(maxWords - minWords) + minWords + 1;
StringBuilder result = new StringBuilder();
for(int p = 0; p < numParagraphs; p++) {
result.Append("<p>");
for(int s = 0; s < numSentences; s++) {
for(int w = 0; w < numWords; w++) {
if (w > 0) { result.Append(" "); }
result.Append(words[rand.Next(words.Length)]);
}
result.Append(". ");
}
result.Append("</p>");
}
return result.ToString();
}
Я написал порт C# для драгоценного камня Ruby Faker, который можно использовать для простого создания поддельных данных: имен, адресов, телефонных номеров и текста lorem ipsum.
Он доступен в виде пакета NuGet (Install-Package Faker.Net
) с исходным кодом на Github, и я также написал пост, представляющий некоторые его функции, с примером кода.
Как это:
const string LoremIpsum = @"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";
To repeat it:
String.Join(Environment.NewLine,
Array.ConvertAll(new int[count], i => LoremIpsum));
Или в.Net 4.0:
String.Join(Environment.NewLine, Enumerable.Repeat(LoremIpsum, count));
На самом деле на Nuget есть пакет, который сделает именно это за вас.
http://www.nuget.org/packages/NLipsum/
Например, вы можете создать абзац текста, просто выполнив это:
var someComments = new NLipsum.Core.Paragraph();
Почему бы не использовать генератор Lorem Ipsum Online?
Я написал этот код, который извлекает строку lorem ispum со страницы HTML:
string LoremIpsum()
{
string HTML = null;
WebRequest request = WebRequest.Create("http://lipsum.com/feed/html");
request.Credentials = CredentialCache.DefaultCredentials;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
HTML = reader.ReadToEnd(); //se citeste codul HTMl
//searching for Lorem Ipsum
HTML = HTML.Remove(0, HTML.IndexOf("<div id=\"lipsum\">"));
HTML = HTML.Remove(HTML.IndexOf("</div>"));
HTML = HTML
.Replace("<div id=\"lipsum\">", "")
.Replace("</div>", "")
.Replace("<p>", "")
.Replace("</p>", "");
reader.Close();
dataStream.Close();
response.Close();
return HTML;
}
Версия с использованием StringBuilder и без тегов HTML (с использованием новой строки вместо знака абзаца):
private static string LoremIpsum(int minWords, int maxWords, int minSentences, int maxSentences, int numLines)
{
var words = new[]{"lorem", "ipsum", "dolor", "sit", "amet", "consectetuer", "adipiscing", "elit", "sed", "diam", "nonummy", "nibh", "euismod", "tincidunt", "ut", "laoreet", "dolore", "magna", "aliquam", "erat"};
var rand = new Random();
int numSentences = rand.Next(maxSentences - minSentences)
+ minSentences + 1;
int numWords = rand.Next(maxWords - minWords) + minWords + 1;
var sb = new StringBuilder();
for (int p = 0; p < numLines; p++)
{
for (int s = 0; s < numSentences; s++)
{
for (int w = 0; w < numWords; w++)
{
if (w > 0) { sb.Append(" "); }
sb.Append(words[rand.Next(words.Length)]);
}
sb.Append(". ");
}
sb.AppendLine();
}
return sb.ToString();
}
Привет
Вы можете использовать WordGenerator или LoremIpsumGenerator из пакета nuget MMLib.RapidPrototyping.
using MMLib.RapidPrototyping.Generators;
public void Example()
{
WordGenerator generator = new WordGenerator();
var randomWord = generator.Next();
Console.WriteLine(randomWord);
LoremIpsumGenerator loremIpsumGenerator = new LoremIpsumGenerator();
var text = loremIpsumGenerator.Next(3,3);
Console.WriteLine(text);
}
Незначительная модификация превосходного метода Грега + Томино, описанного выше, чтобы сделать заглавными буквами первое слово каждого предложения. Я также удалил завершающий символ новой строки и удалил "+ 1", которые дали слишком много. Очень удобно для тестирования возможностей переноса слов в пользовательских интерфейсах! Спасибо Томино и Грегу.
private static string LoremIpsum(int minWords, int maxWords, int minSentences, int maxSentences, int numLines)
{
var words = new[]{"lorem", "ipsum", "dolor", "sit", "amet", "consectetuer", "adipiscing", "elit", "sed", "diam", "nonummy", "nibh", "euismod", "tincidunt", "ut", "laoreet", "dolore", "magna", "aliquam", "erat"};
var rand = new Random();
int numSentences = rand.Next(maxSentences - minSentences)
+ minSentences;
int numWords = rand.Next(maxWords - minWords) + minWords;
var sb = new StringBuilder();
for (int p = 0; p < numLines; p++)
{
for (int s = 0; s < numSentences; s++)
{
for( int w = 0; w < numWords; w++ )
{
if( w > 0 ) { sb.Append( " " ); }
string word = words[ rand.Next( words.Length ) ];
if( w == 0 ) { word = word.Substring( 0, 1 ).Trim().ToUpper() + word.Substring( 1 ); }
sb.Append( word );
}
sb.Append(". ");
}
if ( p < numLines-1 ) sb.AppendLine();
}
return sb.ToString();
}
Нашел этот генератор Lorem Ipsum: http://www.gutgames.com/post/Lorem-Ipsum-Generator-in-C.aspx
В NuGet есть один, который называется NetFx Ipsum Generator.
Вы можете установить его с
Install-Package netfx-IpsumGenerator
Это довольно минимально, хотя, в настоящее время я ищу лучший или способ внести свой вклад.