LoginSignup
1
0

Node.js でキー入力をシンプルに取得したい、という状況があり、以下の標準モジュールを使った簡素なプログラムを作ってみました。

●Readline | Node.js v22.3.0 Documentation
 https://nodejs.org/api/readline.html

今回の内容の元にするサンプルプログラム

今回の内容の元にするプログラムは、上記の公式ページ内に書かれているものを使います。

具体的には、以下のものです。

image.png

const readline = require('node:readline');
const { stdin: input, stdout: output } = require('node:process');

const rl = readline.createInterface({ input, output });

rl.question('What do you think of Node.js? ', (answer) => {
  // TODO: Log the answer in a database
  console.log(`Thank you for your valuable feedback: ${answer}`);

  rl.close();
});

処理の流れとしては、入出力に関する準備的な処理を行い、その後はユーザーからのキー入力を待ち受けます。
そして、ユーザーによるキー入力があったら、ユーザーに入力された内容を出力として返します。

サンプルを書きかえる

上記の内容を書きかえて、以下の内容のものを作ってみました。

const readline = require('node:readline');
const { stdin: input, stdout: output } = require('node:process');

const rl = readline.createInterface({ input, output });

rl.question('数字を入力してください (0-9): ', (answer) => {
  const number = parseInt(answer, 10);
  if (!isNaN(number) && number >= 0 && number <= 9) {
    console.log(`入力された数字は ${number} です`);
  } else {
    console.log('無効な入力です。0から9の数字を入力してください。');
  }
  
  rl.close();
});

大まかな流れは参照した内容と同じです。
違う部分は数字の 0 から 9 のみ受け付けるような処理にしているところです。

入力された内容が数字であり、なおかつ 0 以上 9 以下の値なら、入力された数字が何であったかを返します。一方で、それ以外の入力が行われた場合は、0 から 9 までの数字のいずれかを入力するように促すようにしています。

作ったプログラムの動作確認

上記を実行し、アルファベットや数字を入力してみました。
そして以下のように、意図したとおりの動作になっているのを確認できました。

image.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0