使用.Replace将oldValue替换为newValue

时间:2013-03-06 09:28:57

标签: c# string-formatting

使用.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函数给我一个错误

5 个答案:

答案 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);