C#Long Substring函数

时间:2011-03-12 12:37:27

标签: c# .net string substring

我有一个字符串“可能”比任何简单的int边界都长。

目前,string.substring函数只接受int参数作为索引和长度,这对我来说是不够的,因为我需要很长的参数值类型。

你知道长子串函数的任何实现吗?

或者你建议我用非常长的字符串解决这个可能的子串问题?

谢谢。

4 个答案:

答案 0 :(得分:6)

  

我有一个字符串“可能”比任何简单的int边界都长。

不,在.NET中你不会遇到这个问题。 System.String类本身在任何地方都使用Int32索引和长度属性。

也许你会有一个超过2GB的(char)数组,但是你可以使用'long`索引。

相关问题:What is the maximum possible length of a .NET string?

答案 1 :(得分:0)

正如Henk提供状态链接中的答案,您无法在.NET中创建大小超过2GB的对象(64-bit also has this restriction)。

因此,无论如何都不能拥有那么大的字符串。您需要使用某种流式算法来查找和隔离您感兴趣的数据。

答案 2 :(得分:0)

正如Henk Holterman所说System.String使用int32 ....

但是如果需要,可以使用unsigned int,这可以达到4.3亿: 试试uint。

uint stringLength =  4,294,967,295

虽然它没有比普通的int

高得多

int - > -2,147,483,648至2,147,483,647 uint - > 0至4,294,967,295

答案 3 :(得分:0)

此外,传统的子字符串算法可能在该规模上不能很好地工作(实际上我不知道.Substring是如何工作的)。您可能需要查看this