2015-10-15 3 views
2

Я пытаюсь разобрать AndroidManifest.xml из APK с помощью JSZip,
я получил Uint8Array и преобразовать его в строку, используя следующий код:не может найти в строке, созданной из String.fromCharCode

var zip = new JSZip(fileBlobAsByteArray); 
var androidCompress = zip.files["AndroidManifest.xml"]; 
var androidNonCompress = androidCompress._data.getContent(); 
var androidText = String.fromCharCode.apply(null, androidNonCompress); 
var packageName = androidText.toLowerCase().replace(/ /g,'').indexOf('package'); 

I попытался использовать toLowerCase и удалить все пробелы.

Я получаю строку, которую я вижу в контенте, но когда я ищу слово внутри строки, используя indexOf, он всегда возвращает -1.

Я думаю, проблема заключается в том, что выход, вероятно, не является обычной строкой, а консоль хром выполняет некоторые манипуляции, чтобы представить ее как строку. те же манипуляции, которые я хочу сделать.

+0

вы имеете в виду использовать androidText.toLowerCawse.replace? или вы хотите toLowerCase(). replace –

+0

@JohnBoker Я отредактировал вопрос –

+2

Это не разрешимо, если строка содержит 'package', метод' indexOf' должен работать, и поскольку мы понятия не имеем, как выглядит строка , нет способа ответить на это? – adeneo

ответ

0

Я использовал следующий код для преобразования Uint8Array для поиска строки

// Reading to content to a searchable string 
var packageNameArray = []; 
var textArray = String(androidNonCompress).split(','); 
for (var i = 0, len = textArray.length; i < len; i++) { 
    if (textArray[i] !== 0) { 
     packageNameArray.push(textArray[i]); 
    } 
} 

var searchableText = String.fromCharCode.apply(null, packageNameArray).toString().toLowerCase(); 

 Смежные вопросы

  • Нет связанных вопросов^_^