2013-03-06 67 views
2

替换属性oldValue我有一些问题与使用.replace替换字符使用.Replace与NEWVALUE

实施例:

string word = "Hello"; 
oldValue = "H"; 
newValue = "A"; 

word = word.replace(oldValue,newValue) 

以及上面的代码是否工作良好时,H将被替换A和输出将是阿伊洛

现在我想用更多的NEWVALUE不只是一个,因此H可使用随机NEWVALUE更换不单单只有“A”

当我查NGE NEWVALUE在:

newValue = 'A', 'B', 'C'; 

的.Replace功能是给我一个错误

+0

你想随机替换吗? :) – VladL 2013-03-06 09:31:20

+0

你能重建你的代码吗?这甚至不是一个有效的C#代码 – 2013-03-06 09:33:52

+0

是的,我不知道什么是新值,随机字符。 – 2013-03-06 09:34:02

回答

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)]); 
+0

你快了10秒:) – VladL 2013-03-06 09:37:07

+0

哈哈,对不起,下次我会输入慢一点:( – Kane 2013-03-06 09:38:03

+0

你选了一个0或1的随机数,所以它永远不会用'C'替换掉。 – Guffa 2013-03-06 09:43:05

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]); 

编辑:在包括maxValue为rnd.Next是排他性的,所以你应该使用repl.Length代替(repl.Length -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 
+0

好奇心,这是更快使用'string.Replace'或使用正则表达式? – Kane 2013-03-06 09:39:19

+0

@Kane:'String.Replace'方法自然更快,但它不支持回调的替代。 – Guffa 2013-03-06 09:41:08

+0

很酷,谢谢 - 它可能看起来很奇怪,但我真的不知道哪个更快,而且懒得做任何类型的基准测试。 – Kane 2013-03-06 09:42:47

0

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

string oldValue = "H"; 

string newValue = Convert.ToString((char)(new Random().Next(65, 91))); 
word.Replace(oldValue, newValue);