c# – System.IO.Stream中的模式搜索

c# – System.IO.Stream中的模式搜索,第1张

概述我从源接收系统IO流.只有当它包含字符串“MSTND”时,我才会继续使用流对象. 我意识到除非我将它转换为字符串,否则我在流上无能为力.字符串转换仅用于子字符串匹配.但我不想做任何占用大量时间或空间的事情.时间/空间密集是如何从Stream转换为字符串仅用于子字符串匹配? 我写的代码是: private bool StreamHasString (Stream vStream){ bo 我从源接收系统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 ;}
解决方法 根据您期望此序列的流中的位置,转换为字符串以执行子字符串将非常有效.如果每次都在标准位置,那么您可以读取所需的字节数并将它们转换为字符串.

看看这个以供参考:
http://msdn.microsoft.com/en-us/library/system.io.stream.read.aspx

或者,您可以将字符串“MSTND”转换为byte []并在流中搜索byte [].

编辑:

我发现How do I get a consistent byte representation of strings in C# without manually specifying an encoding?应该有助于将字符串转换为byte [].

总结

以上是内存溢出为你收集整理的c# – System.IO.Stream中的模式搜索全部内容,希望文章能够帮你解决c# – System.IO.Stream中的模式搜索所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1252818.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存