node.jsで標準入力を使ったよくある処理をまとめました。
入力文字列を読み取る
入力された文字列を読み取り、そのまま出力します。
入力例
test1
test2
test3
出力例
test1
test2
test3
ソースコード
process.stdin.resume();
process.stdin.setEncoding('utf8');
var input_string = '';
process.stdin.on('data', function(chunk) {
input_string += chunk;
});
process.stdin.on('end', function() {
const lines = input_string;
console.log(lines);
});
入力文字列の1行目を読み取る
入力された文字列を読み取り、1行目を出力します。
入力例
test1
test2
test3
出力例
test1
解説
入力された文字列を「文字列.split(“\n”)」で行ごとに分割した配列にします。
const lines = input_string.split("\n");
行ごとに分割された配列から1行目を取得します。
const first_line = lines[0];
ソースコード
process.stdin.resume();
process.stdin.setEncoding('utf8');
var input_string = '';
process.stdin.on('data', function(chunk) {
input_string += chunk;
});
process.stdin.on('end', function() {
const lines = input_string.split("\n");
const first_line = lines[0];
console.log(first_line);
});
入力文字列の1行目の数値を読み取る
1行目の文字列を取得して、数値に変換します。
入力例
2
2,5
3,4
出力例
2
解説
入力された文字列を「文字列.split(“\n”)」で行ごとに分割した配列にします。
const lines = input_string.split("\n");
「Number()」を使って文字列を数値に変換します。
const n = Number(lines[0]);
数値に変換する方法には、Number()の他にParseInt()parseInt()やparseFloat()もあります。
ソースコード
process.stdin.resume();
process.stdin.setEncoding('utf8');
var input_string = '';
process.stdin.on('data', function(chunk) {
input_string += chunk;
});
process.stdin.on('end', function() {
const lines = input_string.split("\n");
const n = Number(lines[0]);
console.log(n);
});
区切り文字で分割して配列にする
文字列の2行目を区切り文字で分割した配列にします。
入力例
2
2,5
3,4
出力例
[ '3', '4' ]
解説
「文字列.split(“区切り文字”)」で、文字列を区切り文字で分割した配列を取得します。
const a = 文字列.split("区切り文字");
ソースコード
process.stdin.resume();
process.stdin.setEncoding('utf8');
var input_string = '';
process.stdin.on('data', function(chunk) {
input_string += chunk;
});
process.stdin.on('end', function() {
const lines = input_string.split("\n");
const a = lines[2].split(",");
console.log(a);
});
区切り文字で分割して、変数に代入する
文字列の2行目を区切り文字で分割した配列にします。
入力例
2
2,5
3,4
出力例
a=2
b=5
解説
「文字列.split(“区切り文字”)」で、文字列を区切り文字で分割した配列を取得します。
const 配列 = 文字列.split("区切り文字");
配列の値は分割代入を使って、別個の変数に代入します。
const [a, b] = 配列;
ソースコード
process.stdin.resume();
process.stdin.setEncoding('utf8');
var input_string = '';
process.stdin.on('data', function(chunk) {
input_string += chunk;
});
process.stdin.on('end', function() {
const lines = input_string.split("\n");
const [a, b] = lines[1].split(",");
console.log(`a=${a}`);
console.log(`b=${b}`);
});
入力文字列の2行目から4行目まで取得する
入力文字列の2行目から4行目までを配列にします。
入力例
1行目
2行目
3行目
4行目
5行目
出力例
2行目
3行目
4行目
解説
入力された文字列を読み取り改行コードで分割し、配列にします。
const 配列 = 入力された文字列.split("\n");
配列に対して、array.splice()を使って2行目から4行目までを取り出します。
const a = 配列.slice(1, 4);
ソースコード
process.stdin.resume();
process.stdin.setEncoding('utf8');
var input_string = '';
process.stdin.on('data', function(chunk) {
input_string += chunk;
});
process.stdin.on('end', function() {
const lines = input_string.split("\n");
const a = lines.slice(1, 4);
console.log(a);
});
1行目の行数と列数
1行目の行数と列数があり、2行目以降に整数がある形式です。
2次元配列にして読み込みます。
形式
N M
a11 a12 a13 ... a1M
a21 a22 a23 ... a2M
a31 a32 a33 ... a3M
...
aN1 aN2 aN3 ... aNM
入力
5 4
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
17 18 19 20
出力
[ [ 1, 2, 3, 4 ],
[ 5, 6, 7, 8 ],
[ 9, 10, 11, 12 ],
[ 13, 14, 15, 16 ],
[ 17, 18, 19, 20 ] ]
ソースコード
process.stdin.resume();
process.stdin.setEncoding('utf8');
var input_string = '';
process.stdin.on('data', function(chunk) {
input_string += chunk;
});
process.stdin.on('end', function() {
const lines = input_string.split("\n");
const [n, m] = lines[0].split(' ');
const a = []
for (let i = 1; i <= n; i++) {
a.push(lines[i].split(' ', m).map(value => parseInt(value)));
}
console.log(a);
});