1

私が尋ねている質問に似た投稿を見たことがありますが、それらから実装できる解決策を理解または抽出することができませんでした。私の目標は、さまざまなランダムな長さに基づいてアルファベット文字列を生成し、生成された値にスペース、ゼロ、およびその他の文字を埋め込むことです。

以下のコードからお分かりいただけると思いますが、FirstNameGenerator() に値 ("Left" または "Right") を渡しています。値は列挙型から取得されるため、「オブジェクト」タイプです。ランダム オブジェクトをインスタンス化し、アルファベット文字列を作成し、整数変数 ("size") を 0 ~ 35 の値に設定し、char 配列を作成し、("size") ランダムな整数値を渡して作成しました。データをファイルに書き込むための StreamWriter。

問題は、パディングが生成された値に追加されないことです。生成されたランダム データは、必要なもの (ジャンク テスト データ) に最適ですが、生成された値にパディングを追加する必要があるだけで、わくわくします。「return」ステートメントにも PadRight/PadLeft メソッドを追加しました。「return new string(buffer).PadRight(paddingAmount, paddingCharacter);」しかし、それはうまくいきませんでした。パディングなしでランダムに生成された値を取得しました。また、返された後にメインメソッドに追加しようとしましたが、出力にもパディングを追加できませんでした。

ご指導いただければ幸いです。私はコードから始めたばかりです。これはほとんど私の最初の試みであり、私は今 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();
    }
  }
}
4

1 に答える 1

1

パディングを追加していますが、結果をバッファに保存していません。

試す:

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

PadRight も同様です。

また、なぜバッファを使用しているのですか? 完全に文字列に固執することを検討してください。

于 2013-09-08T04:41:07.503 に答える