我有一个文本文件,其中有数字字符 -
_ _ _ _ _ _ _ _ _ (line 1)
| _| _||_||_ |_ ||_||_| (line 2)
||_ _| | _||_| ||_| _| (line 3)
(line 4)
_ _ _ _ _ _ _ (line 5)
|_||_|| ||_||_ | | ||_ (line 6)
| _||_||_||_| | | | _| (line 7)
(line 8)
发票号码格式:
每个发票编号由 9 位数字组成 [0..9]
发票编号使用 _ 和 | 书写字符。
发票号输入需要4行。
前 3 行包含 27 个字符。
第四行是空白。
输出应该是-
723956789
490867715
我像这样使用 Node js 的 fs 模块读取文本文件,并将每个数字字符基本上分成三部分 -
var fun = function(){
fs.readFile("./input1.txt", 'utf8', function(err, data) {
var i = 0;
console.log(data.length);
while(data[i] != "\n" && i<data.length) {
if(data[i] != " ") {
var str = "";
while(data[i]!= " " && data[i]!= "\n") {
str = str + data[i];
i++;
}
inputA.push(str);
} else {
i++;
}
}
i++;
console.log(i,inputA);
while(data[i] != "\n" && i<data.length) {
if(data[i] != " ") {
var str = "";
while(data[i]!= " " && data[i]!= "\n") {
str = str + data[i];
i++;
}
inputB.push(str);
// console.log(inputA);
} else {
i++;
}
}
i++;
console.log(i,inputB);
while(data[i] != "\n" && i<data.length) {
if(data[i] != " ") {
var str = "";
while(data[i]!= " " && data[i]!= "\n") {
str = str + data[i];
i++;
}
console.log(str);
inputC.push(str);
// console.log(inputA);
} else {
i++;
}
}
console.log(inputA);
console.log(inputB);
console.log(inputC);
})
但无法正常阅读。任何人都可以帮助我阅读并获得所需的输出。
最佳答案
ES6 中有两个函数可以完成这项工作:
function getDigit(pattern) {
return {
" _ | ||_|": 0,
" | |": 1,
" _ _||_ ": 2,
" _ _| _|": 3,
" |_| |": 4,
" _ |_ _|": 5,
" _ |_ |_|": 6,
" _ | |": 7,
" _ |_||_|": 8,
" _ |_| |": 9,
" _ |_| _|": 9, // alternative 9
}[pattern];
}
function getNumber(lines) {
// Chop each line into 9 pieces of 3 chars:
lines = lines.map( line => line.match(/.../g) );
// Combine the pieces of each digit-pattern together:
return +lines[0].map ( (piece, i) => piece + lines[1][i] + lines[2][i] )
// Translate each pattern of 3x3=9 characters to a digit
.map(getDigit)
// Join digits together into one number
.join('');
}
// Sample data
const data =
' _ _ _ _ _ _ _ _ _ \n'
+ ' | _| _||_||_ |_ ||_||_|\n'
+ ' ||_ _| | _||_| ||_| _|\n'
+ '\n'
+ ' _ _ _ _ _ _ _ \n'
+ '|_||_|| ||_||_ | | ||_ \n'
+ ' | _||_||_||_| | | | _|';
const lines = data.split('\n');
var a = getNumber(lines.slice(0, 3));
var b = getNumber(lines.slice(4));
console.log(a);
console.log(b);
关于javascript - 在 JavaScript (Node.js) 中读取数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43054107/