Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как распарсить TXT-Файл? (https://javascript.ru/forum/misc/85550-kak-rasparsit-txt-fajjl.html)

REAB 14.10.2023 19:29

Как распарсить TXT-Файл?
 
Всем привет!
Это мой первый вопрос, сильно не бить :)

Имеется текстовый файл с подобными текстом:


Через 20 лет вы будете больше разочарованы теми вещами, которые вы не делали, чем теми, которые вы сделали.
Так отчальте от тихой пристани. Почувствуйте попутный ветер в вашем парусе. Двигайтесь вперед, действуйте, открывайте!

Когда мне было 5 лет, мама всегда говорила, что главное в жизни – счастье. Когда я пошел в школу, на вопрос,
кем я хочу быть, когда вырасту, я ответил “счастливым человеком”. Мне тогда сказали, что я не понимаю вопроса,
а я ответил, что это они не понимают жизни.

-зравствуйте
-зравствуй Оля проходи садись на диван
-хорошо Наталья Ивановна
-будишь чай и пирог
-да конечно Наталья Ивановна


Файл загружаю так:

function ReadTextFile(file, callback) 
{
    var rawFile = new XMLHttpRequest();
    rawFile.overrideMimeType("application/json");
    rawFile.open("GET", file, true);
    rawFile.onreadystatechange = function() 
	{
        if (rawFile.readyState === 4 && rawFile.status == "200") 
		{
            callback(rawFile.responseText);
        }
    }
    rawFile.send(null);
}
		
var List = [];
		 
ReadTextFile("test.txt", function(data)
{
     var S = String(data);
				
     console.log(S);
				
     for (let i = 0; i < S.length; i++)
    {
	   // ???
     };
});


Как сделать чтобы в массиве List были куски текста из test.txt разделённые пустой строкой?

Типа List[0] содержит первый текст начинающийся со слов "Через 20 лет", в List[1] содержит второй текст начинающийся со слов "Когда мне было 5 лет" и т.д.

Aetae 14.10.2023 22:23

Заметка: responseText в любом случае String, нет смысла data дополнительно кастовать в String.

Если ты уверен что переносы строк всегда linux - \n или windows - \r\n и нет лишних пустых пробелов, то просо так:
var List = S.split('\n\n');
или 
var List = S.split('\r\n\r\n');
соответственно.
Однако для надёжности лучше так:
var List = S.trim().split(/\s*\n\s*\n\s*/);
что учтёт оба варианта переноса, наличие более чем одного переноса и пробелов перед ними.

REAB 15.10.2023 21:46

Большое спасибо! :thanks:


Часовой пояс GMT +3, время: 14:27.