1

我看过与我所问的问题类似的帖子,但我无法理解或提取我能够从中实施的解决方案。我的目标是根据不同的随机长度生成一串字母字符,并用空格、零和其他字符填充生成的值。

正如您希望从下面的代码中看到的那样,我将一个值(“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();
    }
  }
}
4

1 回答 1

1

您正在添加填充,但没有将结果存储回缓冲区。

尝试:

buffer=new string(buffer).PadLeft(paddingAmount,paddingCharacter).ToCharArray();

PadRight 也是如此。

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

于 2013-09-08T04:41:07.503 回答