【发布时间】:2020-11-22 18:31:29
【问题描述】:
我有一个这样的字符串:
string str = "ABCDEFGHI"
我想要这样的结果:
string str1 = "AB";
string str2 = "CDEF";
string str3 = "G";
string str4 = "HI";
这个想法是将一个字符串随机分割成一个随机长度的子字符串序列。
我尝试了以下方法:
public static string SplitString(string input)
{
string result = "";
int j = 0;
for (int i = 0; i < input.Length; i++)
{
Random random = new Random();
j = random.Next(i+1, input.Length);
string subString = input.Substring(i,j); //ERROR
i = j-1;
Console.WriteLine("New substring: " + subString);
result = result + subString;
}
return result;
}
看起来这种方法根本不正确,因为当我创建一个子字符串并且 i 索引大于 j 时,程序会出现异常。
有没有办法避免这个错误?
【问题讨论】:
-
我的第一个观察是你的随机生成器不是随机的。在循环外创建一次
Random的实例,然后重复使用同一个实例。否则循环的所有迭代都可能生成相同的随机数。除此之外,i怎么比j大?调试代码时,确切的异常是什么,使用的值是什么?你从哪里得到这些值?如果您尝试获取超过字符串大小的子字符串,则只需在尝试获取子字符串之前检查该大小。