c# – 如何从char数组中创建一个字符串而不复制?
发布时间:2020-12-15 18:10:42 所属栏目:百科 来源:网络整理
导读:我有一个非常大的char数组,我需要转换为字符串,以使用正则表达式. 但是它太大了,当我将它传递给字符串构造函数时,我得到OutOfMemoryException. 我知道这个字符串是不可变的,因此不可能指定它的底层字符集,但是我需要一种方法来使用正则表达式而不复制整个事
我有一个非常大的char数组,我需要转换为字符串,以使用正则表达式.
但是它太大了,当我将它传递给字符串构造函数时,我得到OutOfMemoryException. 我知道这个字符串是不可变的,因此不可能指定它的底层字符集,但是我需要一种方法来使用正则表达式而不复制整个事物. 如何获取该数组? >我使用StreamReader从一个文件中获取它.我知道内容的起始位置和长度,Read和ReadBlock方法需要我提供一个char []缓冲区. 所以这里是我想知道的事情: >有没有办法指定字符串的底层集合? (它甚至将其字符保留在数组中吗?) 解决方法
我会认为你最好的选择是将多个char []块看成与某个维度重叠的单个字符串.这样,您就可以在各个块上执行正则表达式,重叠将使您有能力确保块中的“中断”不会破坏搜索模式.以伪代码的方式:
int chunkSize = 100000; int overLap = 2000; for(int i = 0; i < myCharArray.length; i += chunkSize - overlap) { // Grab your array chunk into a partial string // By having your iteration slightly smaller than // your chunk size you guarantee not to miss any // character groupings. You just need to make sure // your overlap is sufficient to cover the expression string chunk = new String(myCharArray.Skip(i).Take(chunkSize).ToArray()); // run your regex } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |