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();
}