Как найти строку в байтовом массиве в C#? - PullRequest
0 голосов
/ 01 мая 2020

У меня есть массив байтов, который содержит данные. Я хотел бы найти конкретную c строку в массиве байтов. Я действительно не знаю, как это сделать в C#

byte[] ByteArray = File.ReadAllBytes(@"d:/MyDoc.docx");

String searchString = "Graphics";

Как мне найти слово "Графика" в массиве dataArray? Спасибо

Ответы [ 2 ]

1 голос
/ 01 мая 2020

Файлы Docx имеют размер в архиве . Единственные строки, которые вы там найдете, относятся к zip-заголовкам. Там не будет любой текст из вашего документа.

Вы можете увидеть это в Windows, изменив расширение docx на zip, а затем дважды щелкнув файл. Вы найдете архив с некоторым содержанием XML, который можно открыть с помощью любого читателя Xml или даже блокнота.

Вы можете сделать то же самое вручную в коде (ie через System.IO.Compression). типы), но вы не должны. Существуют другие библиотеки, которые уже проделали большую часть тяжелой работы для извлечения архива и уже знают, какие файлы и схемы нужно искать. Некоторые из них свободно доступны на NuGet.

1 голос
/ 01 мая 2020

Вы можете преобразовать ваш массив байтов в строку, как здесь

string converted = Encoding.UTF8.GetString(buffer, 0, buffer.Length);

и после этого использовать метод string.IndexOf() или string.Contains()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...