尝试生成不同长度的字母字符串,但无法成功输出

本文关键字:字符串 输出 成功 | 更新日期: 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也是如此。

另外,为什么要使用缓冲区?考虑完全坚持字符串。