我正在使用this answer慷慨给我的一些示例代码,当我输入一个长字符串来匹配它时,它会在某些时候与IndexOutOfRangeException崩溃。奇怪的是,当我检查字符串时,它似乎设置为“System.Char []”。为什么会发生这种情况,我该如何解决?
答案 0 :(得分:3)
我强烈怀疑你所拥有的地方:
char[] chars = ...;
string myString = chars.ToString();
而不是
char[] chars = ...;
string myString = new string(chars);
答案 1 :(得分:2)
此代码:
var mutated = member.Str.ToCharArray();
Convert.ToChar((member.Str[ipos] + delta)%123).ToString().CopyTo(0, mutated, ipos, 1);
member.Str = mutated.ToString();
应该像乔恩建议的那样:
var mutated = member.Str.ToCharArray();
Convert.ToChar((member.Str[ipos] + delta)%123).ToString().CopyTo(0, mutated, ipos, 1);
member.Str = new string(mutated);