Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.10.2023, 19:29
Новичок на форуме
Отправить личное сообщение для REAB Посмотреть профиль Найти все сообщения от REAB
 
Регистрация: 14.10.2023
Сообщений: 2

Как распарсить 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 лет" и т.д.
Ответить с цитированием
  #2 (permalink)  
Старый 14.10.2023, 22:23
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,504

Заметка: 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*/);
что учтёт оба варианта переноса, наличие более чем одного переноса и пробелов перед ними.
__________________
29375, 35

Последний раз редактировалось Aetae, 14.10.2023 в 22:27.
Ответить с цитированием
  #3 (permalink)  
Старый 15.10.2023, 21:46
Новичок на форуме
Отправить личное сообщение для REAB Посмотреть профиль Найти все сообщения от REAB
 
Регистрация: 14.10.2023
Сообщений: 2

Большое спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отправить переменные не просто в файл php, а в его php-функцию kupidon Общие вопросы Javascript 1 11.12.2016 10:02
Как подключить файл обработки ajax запроса к своему проекту. St. AJAX и COMET 26 15.10.2016 06:53
как запомнить выбранный инпутом файл? что бы продолжить с ним работу после нажатия F5 aRpi Events/DOM/Window 13 26.05.2015 17:35
Как 100%-но записать в файл? wadim Общие вопросы Javascript 1 12.12.2014 12:26
Как сохранить текст в файл на клиенте Lucky13 Общие вопросы Javascript 7 14.08.2011 12:45