gpt4 book ai didi

C# 随机方法导致 "hidden dash"

转载 作者:太空狗 更新时间:2023-10-30 00:06:03 25 4
gpt4 key购买 nike

我正在尝试使用以下方法生成一个包含 8 个字符的随机字符串,它运行良好,但这只是一个小问题。

当我将字符串打印到屏幕上并将其从 IE 复制到记事本时,有时会在字符串中间添加一个破折号 (-)。是什么原因造成的,我该如何解决?

这种情况发生的次数不多,可能只有 1/10 次,但它仍然会弄乱字符串。

    public string generateString()
{
int length = 8;
string str = "";

string chars = "abcdefghijkmnopqrstuvwxyzABCDEFGH­JKLMNOPQRSTUVWXYZ123456789";

int charsCount = chars.Length;
Random random = new Random();
for (int i = 0; i < length; i++)
{
str += chars[random.Next(0, charsCount)];
}

return str;
}

最佳答案

您显示的代码不会向字符串添加任何奇怪的内容。可能是您复制和粘贴的方式导致了问题。如果它偶尔会导致问题,请查看 HTML 源代码(右键单击“查看源代码”)并查看是否可以在其中找到问题。

编辑:正如 Henk 发现的那样,您的代码显然并不像看上去的那样。您是如何以源代码中的奇怪字符开始的?


话虽如此,我肯定会对您的代码进行一些更改:

  • 我会让名称遵循 .NET 命名约定
  • 我会将 Random 作为参数,因此您可以快速连续多次调用它,而无需多次生成相同的字符串
  • 我会创建一个长度合适的 char 数组,填充它,然后从中创建一个新字符串,而不是使用字符串连接
  • 我会生成要生成的字符串的长度,甚至可能是字符集参数。

只是想知道它会是什么样子 - 在这个例子中,我没有将字符集转换为参数,但我已经从方法中提取了它:

private const string ValidCharacters =
"abcdefghijkmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789";

public static string GenerateString(Random random, int length)
{
// TODO: Argument validation
char[] chars = new char[length];
for (int i = 0; i < chars.Length; i++)
{
chars[i] = ValidCharacters[random.Next(ValidCharacters.Length)];
}
return new string(chars);
}

关于C# 随机方法导致 "hidden dash",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6090051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com