2013-03-06 60 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);