Страницы

Поиск по вопросам

воскресенье, 22 декабря 2019 г.

Взять значения из текста

#javascript #регулярные_выражения #парсер


Имеется такой текст :

Date: Fri, 01 Apr 2016 03:21:49 GMT
Server: nginx
Content-Type: application/x-rar-compressed
Cache-Control: no-cache, private
Connection: keep-alive
Accept-Ranges: bytes
Keep-Alive: timeout=15
Content-Length: 63000000


или он может быть еще примерно таким:

Date: Fri, 01 Apr 2016 03:17:30 GMT
Last-Modified: Sat, 13 Dec 2014 08:28:52 GMT
Server: nginx
ETag: W/"548bf8c4-28496"
Vary: Accept-Encoding
Content-Type: image/jpeg
Connection: keep-alive
Content-Encoding: gzip


В общем, нужно спарсить (если нету текста со значением то пропуск,как например в
первом примере есть Content-Lenth: ... , а во втором нету)
следующее :
Content-Type: ..... (может быть только что то типа application/exe , image/png и т.д)
Content-Length: ..... (могут быть любые цифры)
как это можно сделать? 
учитывая что один или оба значения могут отсутствовать
    


Ответы

Ответ 1



Можно поступить следующим образом var text = 'Date: Fri, 01 Apr 2016 03:21:49 GMT \ Server: nginx \ Content-Type: application/x-rar-compressed \ Cache-Control: no-cache, private \ Connection: keep-alive \ Accept-Ranges: bytes \ Keep-Alive: timeout=15 \ Content-Length: 63000000'; var result = false; if( result = text.match( /Content-Length:\s*(\d+)/ )) { console.log(result[1]); } if( result = text.match( /Content-Type:\s*([^\s]+)/ )) { console.log(result[1]); }

Ответ 2



Почему бы вам для начала не разбить это на массив строк? А дальше каждую строку парсить , ведь у вас строка имеет вид ключ: значение /** Date: Fri, 01 Apr 2016 03:21:49 GMT Server: nginx Content-Type: application/x-rar-compressed Cache-Control: no-cache, private Connection: keep-alive Accept-Ranges: bytes Keep-Alive: timeout=15 Content-Length: 63000000 */ var txt; // текст выше var lines = txt.split('\n'); // получаем строки // теперь можем работать уже с каждой строкой for(var i = 0; i < lines.length; i++) { var line = lines[i]; var props = line.split(':'); var key = props[0]; // заголовок var value = props[1]; // значение заголовка }

Комментариев нет:

Отправить комментарий