[英]How to replace each digit in a string with a different character?
我正在尝试获取一个字符串,例如“e1e2e3”,以将每个数字替换为不同的字符,在这种情况下将是一个随机数。 而不是 e1e2e3,它可能类似于 e5e9e1,因为每个数字都被随机替换。
我试过了
string txt = textBox1.Text;
Regex digits = new Regex(@"\d", RegexOptions.None);
Random rand = new Random();
txt = digits.Replace(txt, rand.Next(0, 9).ToString());
MessageBox.Show(txt);
问题是,每个数字都被替换为相同的随机数。 “e1e2e3”将类似于“e2e2e2”,其中每个数字都相同。
你快到了,你可以使用 Regex.Replace 的回调为每个替换创建一个随机值,而不是使用单个随机值。
如果您只想匹配数字 0-9,则可以使用[0-9]
而不是\\d
因为后者可以匹配所有 Unicode 数字
string txt = textBox1.Text;
Regex digits = new Regex(@"\d", RegexOptions.None);
Random rand = new Random();
txt = digits.Replace(txt, match => rand.Next(0, 9).ToString());
MessageBox.Show(txt);
查看C# 演示
没有正则RegEx
方法
string txt = "e1e2e3";
Random rand = new Random();
string res = string.Concat(txt.Select(x => char.IsDigit(x)?(char)('0'+rand.Next(0, 9)):x));
Next(int,int)
的第二个int
参数的旁注
返回的随机数的唯一上限。 maxValue 必须大于或等于 minValue。
如果你想要0
和9
之间的值,你应该使用Next(0, 10)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.