代码之家  ›  专栏  ›  技术社区  ›  Harshil Doshi

无法在同一语句中修剪字符串并获取子字符串

  •  -2
  • Harshil Doshi  · 技术社区  · 7 年前

    我正在从数据库中提取一个长度从80k到90K字符的字符串。

    我想去掉所有的头条 white-spaces &找一个 substring 大约5万个字符;将其储存在一个容器中 StringBuilder 因为我必须把它作为参数传递给另一个函数。

    代码:

    StringBuider sb = new StringBuilder(dr["str"].ToString().TrimStart().SubString(0,50000)); 
    

    但我有以下例外:

    “系统”类型的未处理异常。mscorlib中出现ArgumentOutOfRangeException。动态链接库

    附加信息:索引和长度必须指向一个位置 在弦内。

    可以肯定的是,即使在修剪之后,字符串也将超过50k个字符。

    如果我先修剪&然后得到子字符串,它就可以正常工作了。 背后的原因可能是什么?不能 substring() 在弦上表演那个飞来飞去的?

    1 回复  |  直到 7 年前
        1
  •  4
  •   Tim Schmelter    7 年前

    似乎不全是弦乐 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);
    
    推荐文章