node.jsで標準入力を使ったよくある処理のまとめ

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);
});

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください