Я пытаюсь привести простой текстовый парсер с Java на Javascript.Попробуйте реализовать простой текстовый парсер в javascript
Требование состоит в том, чтобы преобразовать данный CSV-файл в другой формат. Исходный файл перечисляет несколько значений в соответствии с одним идентификатором в определенных строках:
например:
11111; 12; 23; 23; ....
11111; 32; 12; 12; ....
Итак, первое значение - это Id, а остальные значения соответствуют этому Id. Теперь мне нужен тот же файл, что и все значения в соответствии с одним идентификатором в одной строке. Результат должен быть примерно таким:
11111; 12; 23; 23; 32; 12; 12; ....
я уже достиг этого с помощью простого класса Java:
public static void main(String[] args) throws Exception {
PrintWriter writer = new PrintWriter("t2_lines.csv", "UTF-8");
BufferedReader br = new BufferedReader(new FileReader("t2.csv"));
String previousId="";
String line;
while ((line = br.readLine()) != null) {
String [] words = line.split(";");
String id = words[0];
if (previousId.equals(id)){
// the loop starts at 4 to cut out some unneded values
for(int i=4;i<words.length;i++) {
writer.print(words[i]+";");
}
}else{
writer.println("");
for(String word : words)
writer.print(word+";");
previousId = id;
}
}
br.close();
writer.close();
}
и теперь я пытаюсь восстановить эту вещь в JavaScript, путем чтения в файле от клиента и представить результат в текстовое поле - но, к сожалению, не i've не осуществилось ничего в JavaScript, прежде чем ...
Это мой подход до сих пор:
window.onload = function() {
var fileInput = document.getElementById('fileInput');
var origFileDisplayArea = document.getElementById('origFileDisplayArea');
var reformatFileDisplayArea= document.getElementById('reformatFileDisplayArea');
fileInput.addEventListener('change', function (e) {
var file = fileInput.files[0];
var textType = /text.*/;
if (file.type.match(textType)) {
var reader = new FileReader();
reader.readAsText(file);
reader.onload = function (e) {
var result = reader.result;
var table = parse(result);
origFileDisplayArea.innerText = table;
}
} else {
origFileDisplayArea.innerText = "File not supported!"
}
});
}
function parse(input) {
var previousId = "";
var table = "";
if (typeof input !== "undefined")
var lines = input.split("\n");
for (var i = 0; i <= lines.length; i++) {
var line = lines[i];
if (typeof line !== "undefined")
var words = line.split(";");
console.log("words length: ", words.length);
for (var j = 0; j <= words.length; j++) {
var word = words[j];
if (typeof word !== "undefined") {
word.toString();
var id = words[0];
if (previousId === id) {
for (var jj = 4; jj <=words.length; jj++){
console.log("jj: " + jj)
table += words[jj]+";";
}
}else {
table += "\n";
for (var word in words) {
table += word + ";";
previousId = id;
}
}
}
}
}
return table;
}
но, к сожалению, i'm stucked п но с неопределенными значениями, и все это потребовало времени для запуска.
Так что любые подсказки/помощь были бы весьма полезны. Заранее спасибо