繁体   English   中英

如何用不同的字符替换字符串中的每个数字?

[英]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。

如果你想要09之间的值,你应该使用Next(0, 10)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM