C#在另一个字符串中的字符之间插入一个随机字符串

时间:2015-02-04 17:54:45

标签: c# .net random replace colors

我想创建一个方法,在字符串中的字符之间插入随机的十六进制颜色。这就是我到目前为止所拥有的。

`public static string colorString(string input)
{
    var random = new System.Random();
    string hexcolor = "[" + String.Format("{0:X6}", random.Next(0x1000000)) + "];
    string output = Regex.Replace(input, ".{0}", "$0" + hexcolor);
    return ouput;
}`

这使得字符串"input"看起来像[FF0000]I[FF0000]n[FF0000]p[FF0000]u[FF0000]t"。如何每次都将hexcode变为新的随机?

1 个答案:

答案 0 :(得分:2)

你应该将Random实例移到该函数之外(进入你的类成员)你也可以从调用函数中传入它。

问题是如果你在紧密循环中调用该方法(你很可能),那么每次都会使用相同的种子创建它。由于它具有相同的种子,因此生成的第一个数字对于所有调用都是相同的,显示您的行为。

正确的代码是:

Random random = new System.Random();

public static string colorString(string input)
{   
    string hexcolor = "[" + String.Format("{0:X6}", random.Next(0x1000000)) + "];
    string output = Regex.Replace(input, ".{0}", "$0" + hexcolor);
    return ouput;
}