使用.replace
替换字符时遇到一些问题示例:
string word = "Hello";
oldValue = "H";
newValue = "A";
word = word.replace(oldValue,newValue)
以上代码运行良好,H将替换为A,输出将为Aello
现在我想使用更多newValue而不仅仅是一个,所以H可以用随机newValue替换,而不仅仅是“A”
当我更改newValue时:
newValue = 'A', 'B', 'C';
.Replace函数给我一个错误
答案 0 :(得分:2)
尝试使用System.Random
类在newValue
数组中获取随机项。
string word = "Hello";
var rand = new System.Random();
var oldValue = "H";
var newValue = new[] { "A", "B", "C" };
word = word.Replace(oldValue, newValue[rand.Next(0, 2)]);
答案 1 :(得分:2)
Replace
方法不支持随机替换,您必须自己实现随机部分。
Replace
方法也不支持替换的回调,但Regex.Replace
方法会:
string word = "Hello Hello Hello";
Random rnd = new Random();
string[] newValue = { "A", "B", "C" };
word = Regex.Replace(word, "H", m => newValue[rnd.Next(newValue.Length)]);
Console.WriteLine(word);
示例输出:
Cello Bello Aello
答案 2 :(得分:0)
有趣的任务,但这里是:)
string word = "Hello";
char[] repl = {'A', 'B', 'C'};
Random rnd = new Random();
int ind = rnd.Next(0, repl.Length);
word = word.Replace('H', repl[ind]);
编辑:rnd.Next的maxValue是独占的,所以你应该使用repl.Length而不是(repl.Length -1)
答案 3 :(得分:0)
您可以使用随机字符串创建方法并通过替换推送它: Random String Generator Returning Same String
答案 4 :(得分:0)
用A-Z之间的随机大写字母(65-90)替换。
string oldValue = "H";
string newValue = Convert.ToString((char)(new Random().Next(65, 91)));
word.Replace(oldValue, newValue);