ランダムな単語、文、いくつかの単語/段落で指定された段落、および住所、番号、郵便番号/郵便番号、国、電話番号、電子メールアドレスなどの特定の構文を生成できるc#ジェネレーターを探しています。
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();
}
Ruby Faker gemのC#ポートを作成しました。これを使用して、名前、住所、電話番号、loremipsumテキストなどの偽のデータを簡単に生成できます。
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.";
繰り返すには:
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();
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();
}
こんにちは
MMLib.RapidPrototypingnugetパッケージの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);
}
上記のGreg + Tominoの優れた方法を少し変更して、各文の最初の単語を大文字にします。また、末尾の改行を削除し、1つが多すぎる「+1」をいくつか削除しました。ユーザーインターフェイスのワードラップ機能をテストするのに非常に便利です。 Tomino&Gregに感謝します。
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 Onlineジェネレーターを使用しないのはなぜですか?
HTMLページからloremispum文字列を抽出する次のコードを作成しました。
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;
}
NuGetには NetFx Ipsum Generator という名前があります。
あなたはそれをインストールすることができます
Install-Package netfx-IpsumGenerator
それはかなり最小限ですが、私は現在、より良いもの、または貢献する方法を探しています。
このLoremIpsumジェネレーターが見つかりました: http://www.gutgames.com/post/Lorem-Ipsum-Generator-in-C.aspx