c# – System.IO.Stream中的模式搜索
发布时间:2020-12-15 05:39:00 所属栏目:百科 来源:网络整理
导读:我从源接收系统IO流.只有当它包含字符串“MSTND”时,我才会继续使用流对象. 我意识到除非我将它转换为字符串,否则我在流上无能为力.字符串转换仅用于子字符串匹配.但我不想做任何占用大量时间或空间的事情.时间/空间密集是如何从Stream转换为字符串仅用于子
我从源接收系统IO流.只有当它包含字符串“MSTND”时,我才会继续使用流对象.
我意识到除非我将它转换为字符串,否则我在流上无能为力.字符串转换仅用于子字符串匹配.但我不想做任何占用大量时间或空间的事情.时间/空间密集是如何从Stream转换为字符串仅用于子字符串匹配? 我写的代码是: private bool StreamHasString (Stream vStream) { bool containsStr = false; byte[] streamBytes = new byte[vStream.Length]; vStream.Read( streamBytes,(int) vStream.Length); string stringOfStream = Encoding.UTF32.GetString(streamBytes); if (stringOfStream.Contains("MSTND")) { containsStr = true; } return containsStr ; } 解决方法
根据您期望此序列的流中的位置,转换为字符串以执行子字符串将非常有效.如果每次都在标准位置,那么您可以读取所需的字节数并将它们转换为字符串.
看看这个以供参考: 或者,您可以将字符串“MSTND”转换为byte []并在流中搜索byte []. 编辑: 我发现How do I get a consistent byte representation of strings in C# without manually specifying an encoding?应该有助于将字符串转换为byte []. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |