2016-12-04 2 views
0

Я пытаюсь разобрать текстовый файл ввода в JavaScript.
Я хочу сначала разбить файл на разделы, которые затем я буду использовать, чтобы заполнить форму, добавив следующий фрагмент кода.
Я пытаюсь найти способ разбить вход на 5 разделов; контактная информация (имя, телефон, электронная почта), объективные, ключевые навыки, история занятости и образование.
И вот в лжи проблема. Я не эксперт по регулярному выражению. Оглядываясь по сети, я не мог найти никаких легких библиотек javaScript, чтобы помочь в этом. Было бы целесообразно искать ключевые слова, такие как имя:, а затем сопоставлять все символы, пока не встретится другое ключевое слово, например телефон:, но я не совсем понимаю, как подойти к этой проблеме.Анализ информации из ввода текстового файла в формат JSON

function controller() { 

function loadFromFile(event) { 
    var fileInput = event.target.files[0]; 
    var textType = /txt.*/; 

    if (fileInput.type.match(textType)) { 
     var reader = new FileReader(); 
     reader.onload = function(evt) { 
      console.log(evt.target.result); 
     }; 
     reader.onerror = function(evt) { 
      errorLogger('cannot_read_file', 'The file specified cannot be read '); 
     }; 
     reader.readAsText(fileInput); 
    } else {} 
} 
$(':input[type="file"]').change(loadFromFile); 
}; 

Name: John Doe
Phone: (555) 555-5555
Email: [email protected]

OBJECTIVE Excel in a web developer career. 

KEY SKILLS Development: HTML5, JavaScript, Bootstrap, AngularJS, ReactJS, CSS3, Media Queries, 
Development Project Management: JIRA, Bitbucket, Confluence, Git, GitHub 

EMPLOYMENT HISTORY 
Title: Junior Web Developer 
Company: Apple Inc. 
Dates: June 2015 to September 2016 
* Developed responsive corporate websites 
* Did some cool stuff 
* Led team in closing out JIRA bugs 

Title: Web Development Intern 
Company: Google Inc. 
Dates: January 2015 to May 2015 
* Went on coffee runs for the team 
* Team record for longest keg stand 
* Once ate 82 cupcakes during a team building event 

EDUCATION Degree: BBA 
School: Michigan State University 
GPA: 2.2 Major: 
Computer Science Minor: Drinking 

ответ

0

Это регулярное выражение работы, при условии, что вход всегда точно такой же формат.

/Name: ([a-zA-Z ]+)\nPhone: (\(\d{3}\) \d{3}-\d{4})\nEmail: ([email protected]+)\n{2}OBJECTIVE (.*)\n{2}KEY SKILLS (.*)\n{2}EMPLOYMENT HISTORY ((?:(?:(?:\W+|\s+|.*))*))/g;

https://regex101.com/r/Q5OUFw/2

Я не лучший с JavaScript, но это, кажется, возвращает массив полный спичек.

let m; 
let matches =[]; 

while ((m = regex.exec(str)) !== null) 
{ 
    // This is necessary to avoid infinite loops with zero-width matches 
    if (m.index === regex.lastIndex) 
    { 
     regex.lastIndex++; 
    } 
    m.forEach((match, groupIndex) => { 
    matches.push(match); 
    }); 
} 

Обеспечивает 7 групповых матчей.

matches[0] = Full Match

matches[1] = Имя

matches[2] = телефонный номер

matches[3] = Email

matches[4] = Объективные

matches[5] = Навыки

matches[6] = История занятости

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