C# 用一系列随机生成的数字替换字符串

C# 用一系列随机生成的数字替换字符串,c#,random,numbers,C#,Random,Numbers,我正在尝试创建一个清理程序,我陷入了一个困境,我必须生成一组随机数来替换一个数字字符串,虽然我可以得到一次随机数,但我似乎不知道如何让它替换整个九个字符的字符串 public static int GetRandomNumber() { Random rnd = new Random(); // creates a number between 0 and 9 int ranNum = rnd.Next(10

我正在尝试创建一个清理程序,我陷入了一个困境,我必须生成一组随机数来替换一个数字字符串,虽然我可以得到一次随机数,但我似乎不知道如何让它替换整个九个字符的字符串

public static int GetRandomNumber()
        {
            Random rnd = new Random();
            // creates a number between 0 and 9
            int ranNum = rnd.Next(10);
            return ranNum;
        }
我知道这与检查字符串长度和重复直到替换整个字符串有关,但我一辈子都记不起怎么做了,谷歌搜索有点太不具体了。字符串本身正在从文本文件中提取,并已拆分为一个数组

public static string[] ScrubData(string line)
        {
            string[] words = line.Split('|');
            replaceData(words);
            MessageBox.Show(words[0] + words[2]);
            return words;
        }

        private static void replaceData(string[] words)
        {

            words[0] = Convert.ToString(GetRandomNumber());            
        }

我知道有人问过类似的问题,但我不知道什么是“锁”,也不知道如何将他们的问题与我的问题联系起来。

我不确定我是否完全理解,但听起来你想要一个方法,返回一个与输入字符串长度相同的随机数字符串?如果是这样,这应该是可行的:

private static Random _rnd = new Random();

public static string ReplaceCharactersWithRandomNumbers(string input)
{
    if (input == null) return null;

    var newString = new StringBuilder();

    for (int i = 0; i < input.Length; i++)
    {
        newString.Append(_rnd.Next(10));
    }

    return newString.ToString();
}

您需要枚举该字符串并重新生成整个字符串。看起来您的输入字符串是一组用tee(“|”)标记分隔的标记。我使用StringBuilder是因为在.NET中连接大量字符串的速度很慢

试试这个。。。或者类似的东西:

    public static string ScrubData(string line)
    {
        string[] words = line.Split('|');
        System.Text.StringBuilder sb = new StringBuilder();
        for (int i = 0; i < words.Length; i++)
        {
            sb.Append(GetRandomNumber().ToString());
            if (i + 1 < words.Length)
                sb.Append("|");
        }
        return sb.ToString();
    }
公共静态字符串ScrubData(字符串行)
{
string[]words=line.Split(“|”);
System.Text.StringBuilder sb=新的StringBuilder();
for(int i=0;i
AH,谢谢你们两位,出于某种原因,我完全忽略了(inti=0;IStringBuilder是连接字符串的一种更有效的方法(使用
.Append
),但是
newString
的类型可以更改为
string
,然后在
for
正文中,您只需执行
newString+=rnd.Next(10).ToString()
另一件需要注意的事情是,
Random
的创建实际上应该在这个方法之外。如果您使用相同的字符串快速连续调用此方法,则它们都将以相同的随机字符结束。我将更新答案,以反映更好的方式。
    public static string ScrubData(string line)
    {
        string[] words = line.Split('|');
        System.Text.StringBuilder sb = new StringBuilder();
        for (int i = 0; i < words.Length; i++)
        {
            sb.Append(GetRandomNumber().ToString());
            if (i + 1 < words.Length)
                sb.Append("|");
        }
        return sb.ToString();
    }