请教一个关于字符排列的问题
获得一个字符串比如:AbXAbY
想替换X和Y,X替换0-9,Y替换A-F,排列出所有的组合。
如Ab0Aba,Ab0Abb,Ab0Abc依次类推。
C# code
StringBuilder InvCode = new StringBuilder(txtInv.Text.Trim());
for (int i = 0; i <9; i++)
{
for (int c = 65; c < 71; c++)
{
InvCode.Replace("X", i.ToString());
InvCode.Replace("Y",Convert.ToChar(c).ToString());
ListBox1.Items.Add(InvCode.ToString());
}
}
我写的这个在ListBox1里只会添加一种组合AbAb0Aba。不知道那里出错,头疼啊,特来请教,希望各位大哥指点一下。
在此谢过。
------解决方案--------------------不过即使是这样,也只是在特殊情况下才正确,正确的条件是你的txtInv里只有一个X和一个Y,如果有两个X,应该就不对了,
------解决方案--------------------
因为你用的是StringBuilder,调用Replace以后就改变了对象本身了,所以第一次循环过后,InvCode的内容就变成"AbAb0Aba"了,不再包含X与Y,之后的循环就不再改变InvCode的内容,最终导致只能得到一个值。
可以不使用StringBuilder,直接用String.Replace连续替换:
ListBox1.Items.Add(InvCode.Replace("X", i.ToString()).Replace("Y",Convert.ToChar(c).ToString()));
另外0-9的终止条件应该是i<10或者i<=9