我有一个文本文件,可以从这种形式生成值,
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);
答案 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>