我有一个字符串“可能”比任何简单的int边界都长。
目前,string.substring函数只接受int参数作为索引和长度,这对我来说是不够的,因为我需要很长的参数值类型。
你知道长子串函数的任何实现吗?
或者你建议我用非常长的字符串解决这个可能的子串问题?
谢谢。
答案 0 :(得分:6)
我有一个字符串“可能”比任何简单的int边界都长。
不,在.NET中你不会遇到这个问题。 System.String
类本身在任何地方都使用Int32
索引和长度属性。
也许你会有一个超过2GB的(char)数组,但是你可以使用'long`索引。
答案 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。