есть ли генератор lorem ipsum в С#?

Я ищу генератор С#, который может генерировать случайные слова, предложения, абзацы, заданные количеством слов/абзацев и определенным синтаксисом, таким как адрес, номера, почтовый индекс/почтовый индекс, страна, номера телефонов, адрес электронной почты.


person alex    schedule 26.11.2010    source источник
comment
Я погуглил, и первый результат привел меня сюда :).   -  person RayLoveless    schedule 04.03.2013
comment
Я также нашел Lorem.NET очень простым: пакет nuget, а также   -  person Majid khalili    schedule 15.08.2019


Ответы (10)


Я написал C#-порт драгоценного камня Ruby Faker, который можно использовать для простого создания поддельных данных: имен, адресов, номеров телефонов и текста lorem ipsum.

Он доступен в виде пакета NuGet (Install-Package Faker.Net) с исходным кодом на Github, и я также написал сообщение о некоторых его функциях с примером кода.

person Ben Smith    schedule 08.07.2012
comment
Это круто. Именно то, что я искал. Спасибо! - person JoshSchlesinger; 20.02.2014
comment
это круто! Как раз то, что мне было нужно. Отличная работа Бен - person ncbl; 28.10.2014
comment
Очень мило спасибо - person Rodney; 20.08.2016

Как это:

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));
person SLaks    schedule 26.11.2010

На самом деле на Nuget есть пакет, который делает именно это для вас.

http://www.nuget.org/packages/NLipsum/

Например, вы можете создать абзац текста, просто сделав это:

var someComments = new NLipsum.Core.Paragraph();
person Joseph    schedule 18.09.2013

Почему бы не использовать генератор 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; 
}
person Ionică Bizău    schedule 28.10.2012
comment
Зачем полагаться на внешний сервис (который рано или поздно может выйти из строя) для этого простого алгоритма? - person A. M.; 10.10.2013
comment
Довольно хороший пример, спасибо, что поделились. Полностью подходит для тестовых сценариев — что, честно говоря, является единственной причиной, по которой я хочу использовать текст Lorem ipsum в первую очередь — и может быть легко адаптирован для других вариантов использования, помимо этой страницы Lorem ipsum. - person nicdaniau; 14.05.2020

Здравствуйте,
вы можете использовать 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

person Mino    schedule 30.12.2013

Версия с использованием 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();
    }
person Tomino    schedule 20.05.2015

Небольшая модификация превосходного метода Грега + Томино, приведенного выше, чтобы использовать первое слово каждого предложения с заглавной буквы. Я также удалил завершающую новую строку и удалил некоторые «+ 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();
}
person kEnobus    schedule 04.09.2015

В NuGet есть один, который называется NetFx Ipsum Generator.

Вы можете установить его с помощью

Install-Package netfx-IpsumGenerator

Это довольно минимально, хотя я сейчас ищу лучший или способ внести свой вклад.

person John MacIntyre    schedule 12.11.2011

Нашел этот генератор Lorem Ipsum: http://www.gutgames.com/post/Lorem-Ipsum-Generator-in-C.aspx

person Muxa    schedule 13.08.2012

person    schedule
comment
Сейчас самое время использовать StringBuilder вместо многочисленных конкатов строк. - person Jim Buck; 20.04.2015
comment
@JimmyBoh Обновлено до пользователя StringBuilder. Прошло вечность с большим количеством текста. - person Chris Ballance; 03.11.2015
comment
Спасибо за улучшение - person Greg; 03.11.2015