Я ищу генератор С#, который может генерировать случайные слова, предложения, абзацы, заданные количеством слов/абзацев и определенным синтаксисом, таким как адрес, номера, почтовый индекс/почтовый индекс, страна, номера телефонов, адрес электронной почты.
есть ли генератор lorem ipsum в С#?
Ответы (10)
Я написал C#-порт драгоценного камня Ruby Faker, который можно использовать для простого создания поддельных данных: имен, адресов, номеров телефонов и текста lorem ipsum.
Он доступен в виде пакета NuGet (Install-Package Faker.Net
) с исходным кодом на Github, и я также написал сообщение о некоторых его функциях с примером кода.
- Исходный код Faker (на github)
- Пакет Faker.Net NuGet
- Заполнение тестовыми данными с помощью C# для реалистичного модульного и интеграционного тестирования
Как это:
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.";
Чтобы повторить это:
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;
}
Здравствуйте,
вы можете использовать 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);
}
сайт Nuget
Сайт проекта Codeplex
Версия с использованием 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();
}
Небольшая модификация превосходного метода Грега + Томино, приведенного выше, чтобы использовать первое слово каждого предложения с заглавной буквы. Я также удалил завершающую новую строку и удалил некоторые «+ 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();
}
В NuGet есть один, который называется NetFx Ipsum Generator.
Вы можете установить его с помощью
Install-Package netfx-IpsumGenerator
Это довольно минимально, хотя я сейчас ищу лучший или способ внести свой вклад.
Нашел этот генератор Lorem Ipsum: http://www.gutgames.com/post/Lorem-Ipsum-Generator-in-C.aspx