我看过与我所问的问题类似的帖子,但我无法理解或提取我能够从中实施的解决方案。我的目标是根据不同的随机长度生成一串字母字符,并用空格、零和其他字符填充生成的值。
正如您希望从下面的代码中看到的那样,我将一个值(“Left”或“Right”)传递给 FirstNameGenerator()。这是一个“对象”类型,因为值是从枚举中检索的。我实例化了一个随机对象,创建了一串字母字符,将整数变量(“size”)设置为 0 到 35 之间的值,创建了一个 char 数组并传入(“size”)随机整数值并创建用于将数据写入文件的 StreamWriter。
问题是,填充没有被添加到生成的值中。生成的随机数据非常适合我的需要(垃圾测试数据),但我只需要将填充添加到生成的值中,我会很兴奋。我还在“return”语句中添加了 PadRight/PadLeft 方法,“return new string(buffer).PadRight(paddingAmount, paddingCharacter);” 但这没有用。仍然得到没有填充的随机生成值。我还尝试在它返回后将它添加到 main 方法中,但它也未能将填充添加到那里的输出中。
任何指导将不胜感激。我只是从代码开始。这几乎是我的第一次尝试,我已经在这两天了。我确信有很多更好的方法可以完成这项任务,更有经验的编码人员可能会在一秒钟内喋喋不休,所以如果有人有任何意见、指导或建设性的批评 - 我全都听好了。
谢谢!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace RondomGenerators
{
class RandomGenerators
{
public string FirstNameGenerator(int paddingAmount, char paddingCharacter, object paddingDirection)
{
Random rand = new Random();
const string alphaChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
int size = rand.Next(0, 35);
char[] buffer = new char[size];
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"F:\RondomGenerators\RondomGenerators\GenData\output.txt", false))
if (paddingDirection.ToString().Contains("Right"))
{
for (int i = 0; i < size; i++)
buffer[i] = alphaChars[rand.Next(alphaChars.Length)];
new string(buffer).PadRight(paddingAmount, paddingCharacter);
file.WriteLine(buffer);
}
else
{
for (int i = 0; i < size; i++)
buffer[i] = alphaChars[rand.Next(alphaChars.Length)];
new string(buffer).PadLeft(paddingAmount, paddingCharacter);
file.WriteLine(buffer);
}
return new string(buffer);
}
}
}
主要:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace RondomGenerators
{
class Program
{
enum paddingDirection { Right, Left };
static void Main(string[] args)
{
RandomGenerators fname = new RandomGenerators();
Console.WriteLine(fname.FirstNameGenerator(15, 'X', paddingDirection.Right));
Console.ReadLine();
}
}
}