c# - 无法在同一语句中修剪字符串并获取子字符串
问题描述
我正在从数据库中获取一个长度为 80k 到 90K 个字符的字符串。
我想删除所有前导white-spaces
并获取substring
大约 50k 个字符并将其存储到 aStringBuilder
中,因为我必须将其作为参数传递给另一个函数。
代码:
StringBuider sb = new StringBuilder(dr["str"].ToString().TrimStart().SubString(0,50000));
但我得到以下异常:
mscorlib.dll 中出现“System.ArgumentOutOfRangeException”类型的未处理异常
附加信息:索引和长度必须引用字符串中的位置。
可以肯定的是,即使在修剪之后,字符串也会有超过 50k 个字符。
如果我先进行修剪然后获取子字符串,那么它可以正常工作。背后的原因可能是什么?不能substring()
在飞来飞去的弦上演奏吗?
解决方案
似乎并非Length
此表中的所有字符串都是>= 50000
(至少不是在 之后TrimStart
)。如果字符串较短,则会出现此异常。这更安全、更易读、更高效:
string str = dr["str"].ToString().TrimStart();
if(str.Length > 50000)
str = str.Remove(50000); // or Substring(0,50000)
var sb = new StringBuilder(str);
推荐阅读
- docker - vsts 发布 - Azure 容器注册表工件
- c - C 语言,检查参数是否为 shell 内置命令
- docker - PHP-FPM Docker 容器不创建 Unix 套接字文件
- android - 项目中的重复 zip 条目
- reactjs - 如何添加单选按钮以选择带有 ant 设计表的行
- unit-testing - 测试聚合物 2 中的 dom 突变
- python - ConvNet 中的 col2im 实现
- javascript - 我的 Java Script 代码似乎无法输入我错过了什么
- android - 菜单项图标下的空标题空间
- google-bigquery - 使用python在bigquery中使用循环上传文件。缺失数据