求大神关注一下这个 string.Substring() 出现奇怪异常的问题 StackOverflowSubstring 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 current thread is in a stack overflow state,你有用线程?貌似说线程堆栈溢出 你报错是System.Data.dll出现的异常,而substring跟这个dll一点关系都没有还是找找异常到底出现在哪里吧目测是你代码跟exe行号不一致,导致异常指向的行号错误了清理下解决方案,重新生成可以加个断点测试 这个代码是在Show了一个窗体出来然后执行的,没有用线程完整代码如下:string str = “19 Brodie Place Unit 23Braemar VillasBethlehemTauranga 3110”;string[] strEnter = str.Split('\n'); for (int g = 0; g < strEnter.Length; g++) { List<string> strList = CutSubstring(strEnter[g], 23, null);//换行 }/// <summary> /// 截取字符串长度分割 /// </summary> /// <param name="str">判断需要分割字符串</param> /// <param name="strLength">设定分割长度</param> /// <param name="strList">分割长度字符串集合</param> /// <returns>分割长度字符串集合</returns> public static List<string> CutSubstring(string str,int strLength, List<string> strList) { if (strList == null) strList = new List<string>(); if (str.Length > strLength)//判断字符串长度是否大于设定参数长度 {//若大于 string TempBeforStr = str.Substring(0, strLength);//取设定长度的字符串 int LastLength = TempBeforStr.LastIndexOf(' ');//取此串字符中最后一个空格的索引 if (LastLength < 0)//若不存在空格 则直接截取设定长度返回 { strList.Add(TempBeforStr); return strList; } string BeforStr = str.Substring(0, LastLength);//获取未超过长度字符串 strList.Add(BeforStr); string AfterStr = str.Substring(LastLength);//获取超过长度之后的字符串 if (AfterStr.Length > strLength)//如果超过长度之后的字符串的长度仍大于设定长度,则再一次分割 { strList = CutSubstring(AfterStr, strLength, strList); } else { strList.Add(AfterStr); } } else {//若小于,直接返回原字符串 strList.Add(str); return strList; } return strList; } 如果是string TempBeforStr = str.Substring(0, strLength);报错报错的时候,看看str和strLength到底都是什么东西 使用商业控件DEV了,如何能够达到点击工具栏按钮弹出个浮动窗体 C#软件开发 程序更新后安装的问题 在WinForm中用NetForm的控件?可行么? 问一个接口的问题 大家好,我把数据插入ACCESS中出错 “INSERT INTO 语句的语法错误”,请问怎样可以解决啊 对正则表达式很不明白,请进来解释一下好吧 请教C#WinForm如何调用word程序? 急...急...急...呀! 图片裁剪的问题? pictureBox??? 请教微软的技术专家。一个完全不合理的问题!C#足够变态的问题! Win8 Metro开发 如何调用平板摄像头功能? access数据库连接字符串问题!
还是找找异常到底出现在哪里吧
目测是你代码跟exe行号不一致,导致异常指向的行号错误了
清理下解决方案,重新生成可以加个断点测试
这个代码是在Show了一个窗体出来然后执行的,没有用线程
完整代码如下:string str = “19 Brodie Place Unit 23Braemar VillasBethlehemTauranga 3110”;
string[] strEnter = str.Split('\n');
for (int g = 0; g < strEnter.Length; g++)
{
List<string> strList = CutSubstring(strEnter[g], 23, null);//换行
}/// <summary>
/// 截取字符串长度分割
/// </summary>
/// <param name="str">判断需要分割字符串</param>
/// <param name="strLength">设定分割长度</param>
/// <param name="strList">分割长度字符串集合</param>
/// <returns>分割长度字符串集合</returns>
public static List<string> CutSubstring(string str,int strLength, List<string> strList)
{
if (strList == null)
strList = new List<string>();
if (str.Length > strLength)//判断字符串长度是否大于设定参数长度
{//若大于
string TempBeforStr = str.Substring(0, strLength);//取设定长度的字符串
int LastLength = TempBeforStr.LastIndexOf(' ');//取此串字符中最后一个空格的索引
if (LastLength < 0)//若不存在空格 则直接截取设定长度返回
{
strList.Add(TempBeforStr);
return strList;
}
string BeforStr = str.Substring(0, LastLength);//获取未超过长度字符串
strList.Add(BeforStr);
string AfterStr = str.Substring(LastLength);//获取超过长度之后的字符串
if (AfterStr.Length > strLength)//如果超过长度之后的字符串的长度仍大于设定长度,则再一次分割
{
strList = CutSubstring(AfterStr, strLength, strList);
}
else
{
strList.Add(AfterStr);
}
}
else
{//若小于,直接返回原字符串
strList.Add(str);
return strList;
}
return strList;
}
string TempBeforStr = str.Substring(0, strLength);
报错
报错的时候,
看看str和strLength到底都是什么东西