【问题标题】:is there any lorem ipsum generator in c#? [closed]c# 中是否有任何 lorem ipsum 生成器? [关闭]
【发布时间】:2011-05-16 05:58:12
【问题描述】:

我正在寻找 ac# 生成器,它可以生成随机单词、句子、由多个单词/段落和某些语法给出的段落,例如地址、数字、邮政编码/邮政编码、国家/地区、电话号码、电子邮件地址.

【问题讨论】:

标签: c# lorem-ipsum


【解决方案1】:
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();
}

【讨论】:

  • 这将是使用 StringBuilder 的好时机,而不是大量的字符串连接。
  • @JimmyBoh 已更新为用户 StringBuilder。用大量文字占据了永恒。
  • 感谢改进
【解决方案2】:

我编写了 Ruby Faker gem 的 C# 端口,可用于轻松生成虚假数据:姓名、地址、电话号码和 lorem ipsum 文本。

它以 NuGet 包 (Install-Package Faker.Net) 的形式提供,源代码在 Github 上,我还写了一篇文章介绍它的一些功能,并附有示例代码。

【讨论】:

  • 这很棒。正是我想要的。谢谢!
  • 这太棒了!正是我需要的。伟大的工作本
  • 非常好 - 谢谢
【解决方案3】:

像这样:

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));

【讨论】:

    【解决方案4】:

    Nuget 上实际上有一个包可以为你做这件事。

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

    例如,您可以通过这样做来生成一段文本:

    var someComments = new NLipsum.Core.Paragraph();
    

    【讨论】:

      【解决方案5】:

      为什么不使用 Lorem Ipsum Online 生成器?

      我编写了这段代码,用于从 HTML 页面中提取 lorem ispum 字符串:

      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; 
      }
      

      【讨论】:

      • 为什么要依赖外部服务(迟早会出现故障)来实现这个简单的算法?
      • 非常简洁的例子,谢谢分享。对于测试场景来说完全没问题——坦率地说,这是我首先要使用 Lorem ipsum 文本的唯一原因——并且可以轻松地适应此 Lorem ipsum 页面之外的其他用例。
      【解决方案6】:

      您好
      您可以使用 MMLib.RapidPrototyping nuget 包中的 WordGenerator 或 LoremIpsumGenerator。

      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 site
      Codeplex project site

      【讨论】:

        【解决方案7】:

        使用 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();
            }
        

        【讨论】:

          【解决方案8】:

          对 Greg + Tomino 的上述出色方法进行了细微修改,以将每个句子的第一个单词大写。我还删除了尾随的换行符并删除了一些“+ 1”,这些“+ 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();
          }
          

          【讨论】:

            【解决方案9】:

            在 NuGet 中有一个名为 NetFx Ipsum Generator

            你可以安装它

            Install-Package netfx-IpsumGenerator
            

            虽然它非常小,但我目前正在寻找更好的,或贡献的方式。

            【讨论】:

              【解决方案10】:

              【讨论】:

                猜你喜欢
                • 2013-07-30
                • 2010-09-10
                • 2021-11-28
                • 2013-12-04
                • 2014-06-19
                • 2012-09-04
                • 2021-12-17
                • 2013-10-18
                • 2011-04-09
                相关资源
                最近更新 更多