有没有一种方法可以使用JavaScript中的FileReader获取文件的特定部分?

时间:2019-10-30 12:28:22

标签: javascript html filereader

我有一个文本文件,可以从这种形式生成值,

First Name: John
Last Name: Doe

我还想上传一个与文件输入相同的文件,并使用FileReader进行读取,我能够获取文本文件的所有内容,但是我只想获取':'之后的部分,例如John和Doe,所以我可以将其写为

Username: John Doe

有没有办法只读取和写入':'之后的部分?

这是我尝试过的方法,但是它写入了所有值,包括名字和姓氏

var reader = new FileReader();
reader.onload = function (event) {
  var contents = event.target.result;
  document.getElementById("username").innerHTML = contents;
};
reader.readAsText(file);

2 个答案:

答案 0 :(得分:2)

由于您不知道文件的内容或在读取文件之前对其执行任何操作,因此必须读取整个文件。 要获得:之后的值,您可以处理得到的字符串

以下代码假定读取的字符串的行以\n分隔

var reader = new FileReader();
reader.onload = function (event) {
  var contents = event.target.result;
  var lines = contents.split('\n');
  var username = "";
  lines.forEach(line => {
    var [key, value] = line.split(':'); // splits the line into an array breaking on the colon
    if(key === 'First Name' || key === 'Last Name') { // checks for the keys so that any other key:value in subsequent lines will not be added to the username
        username = username + " " + value.trim() // to remove trailing whitespaces, if any, from the value
    }
  });
  document.getElementById("username").innerHTML = username;
};
reader.readAsText(file);

答案 1 :(得分:0)

看看这个(假设文件中只有一个)

const file = `First name: John
            Last name: Doe`

const [match, fName, lName] = file.match(/: (\w+)\s.+: (\w+)\s?/)
document.getElementById("username").innerHTML = `${fName.trim()} ${lName.trim()}`;
<span id="username"></span>