尝试生成不同长度的字母字符串,但无法成功输出
本文关键字:字符串 输出 成功 | 更新日期: 2023-09-27 18:30:30
我看到了与我所问的问题类似的帖子,但我无法理解或提取我能够从中实现的解决方案。我的目标是根据不同的随机长度生成一串字母字符,并用空格、零和其他字符填充生成的值。
正如您希望从下面的代码中看到的那样,我将一个值("Left"或"Right")传递给FirstNameGenerator()。它是一种"对象"类型,因为值是从枚举中检索的。我实例化了一个随机对象,创建了一个字母字符字符串,将整数变量("size")设置为0到35之间的值,创建了一个char数组并传入("size")随机整数值,并创建了一个StreamWriter将数据写出到文件中。
问题是,填充没有添加到生成的值中。生成的随机数据非常适合我需要的(垃圾测试数据),但我只需要将填充添加到生成的值中,我会很兴奋。我也将 PadRight/PadLeft 方法添加到"return"语句中,"return new string(buffer)。PadRight(paddingAmount, paddingCharacter);",但这不起作用。仍然在没有填充的情况下获得随机生成的值。返回后,我还尝试将其添加到 main 方法中,但它也未能将填充添加到那里的输出中。
任何指导将不胜感激。我刚刚开始编写代码。这几乎是我的第一次尝试,我已经在 2 天了。我相信有很多更好的方法来完成这项任务,更有经验的程序员可以在一秒钟内喋喋不休,所以如果有人有任何意见、指导或建设性的批评 - 我全都听见了。
谢谢!
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();
}
}
}
您正在添加填充,但不会将结果存储回缓冲区中。
尝试:
buffer=new string(buffer).PadLeft(paddingAmount,paddingCharacter).ToCharArray();
PadRight也是如此。
另外,为什么要使用缓冲区?考虑完全坚持字符串。