2

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

4

5 回答 5

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)]);
于 2013-03-06T09:34:43.613 回答
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
于 2013-03-06T09:37:29.023 回答
0

用AZ之间的随机大写字母(65-90)替换。

string oldValue = "H";

string newValue = Convert.ToString((char)(new Random().Next(65, 91)));
word.Replace(oldValue, newValue);
于 2013-03-06T09:45:09.483 回答
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)

于 2013-03-06T09:34:53.960 回答
0

您可以使用随机字符串创建方法并通过替换推送它: Random String Generator Returning Same String

于 2013-03-06T09:36:48.087 回答