我希望能够发送这样的字符串:
这是* first *和* second *字。
并获取如下所示的字符串:
这是_______(stfri)和______(cnodes)一词。
但是以下代码不起作用,因为在Regex.Replace
内部,它只发送一次$0
,取回$0
,然后将其用作变量以显示适当的单词,即返回
这是________(*第一*)和________(*第二*)单词。
我如何进入Regex循环并在每次迭代中调用我的ScrambleWord
函数?
class Program
{
public static Random TheRandom;
static void Main(string[] args)
{
TheRandom = new Random();
string text = "This is the *first* and the *second* word.";
string message = Regex.Replace(text, @"\*[a-z]+\*", @"________ (" + ScrambleWord("$0") + ")");
Console.WriteLine(message);
Console.ReadLine();
}
public static string ScrambleWord(string word)
{
string r = word;
r = r.Replace("*", "");
r = ShuffleLetters(r);
return r;
}
public static string ShuffleLetters(string str)
{
char[] array = str.ToCharArray();
int n = array.Length;
while (n > 1)
{
n--;
int k = TheRandom.Next(n + 1);
var value = array[k];
array[k] = array[n];
array[n] = value;
}
return new string(array);
}
}