chatGPTに聞いてみた。
Q.JSの標準入力から値を受け取れる方法が何種類ありますか?
A.4種類。
1、readlineモジュールを使用する方法:Node.jsで提供されるreadlineモジュールを使用して、標準入力から一行ずつ入力を受け取ることができます。この方法は、Node.jsアプリケーションで使用されることが一般的です。
2、process.stdinストリームを使用する方法:Node.jsで提供されるprocess.stdinストリームを使用して、標準入力からバイトストリームとして入力を読み込むことができます。
3、prompt()関数を使用する方法:ブラウザーのJavaScriptで使用されるprompt()関数を使用して、ユーザーからの入力を取得することができます。
4、window.prompt()関数を使用する方法:ブラウザーのJavaScriptで使用されるwindow.prompt()関数を使用して、ユーザーからの入力を取得することができます。この方法は、prompt()関数とほぼ同じですが、ブラウザー環境でのみ使用できます。
5、フォームを使用する方法:HTMLフォームを使用して、ユーザーからの入力を取得することができます。この方法は、通常、ウェブアプリケーションで使用されます。
上記の方法は、それぞれ独自の機能とメリットがあります。アプリケーションや環境に応じて、適切な方法を選択する必要があります。
今回は、、1つ目の方法、つまりreadlineモジュールを使用する方法で受け取る。
JavaScriptのNode.js環境で、readlineモジュールを使用して標準入力を受け取る方法を示したものです。具体的には、process.stdinをreadlineモジュールに渡して、createInterface関数を使用してreaderオブジェクトを作成しています。lineイベントを使用して、標準入力からの各行を読み取り、closeイベントを使用して、入力が完了したことを示しています。
JSで一行の数値を受け取るの巻
process.stdin.resume();
process.stdin.setEncoding('utf8');
var input_string = "";
var reader = require('readline').createInterface({
input: process.stdin,
output: process.stdout
});
reader.on('line', (line) => {
input_string = line;
});
reader.on('close', () => {
var input_int = parseInt(input_string); //数値はparseIntを使う。
var result = input_int + 10;
console.log(result);
});
入力値
10
実行結果
20
JSで一行の文字列を受け取るの巻
process.stdin.resume();
process.stdin.setEncoding('utf8');
var input_string = "";
var reader = require('readline').createInterface({
input: process.stdin,
output: process.stdout
});
reader.on('line', (line) => {
input_string = line;
});
reader.on('close', () => {
console.log("Hello " + input_string);
});
入力値
omochi
実行結果
Hello omochi
JSで三行の文字列を受け取るの巻
process.stdin.resume();
process.stdin.setEncoding('utf8');
var lines = []; //標準入力から一行づつ受け取った文字列を配列に格納して受け取る
var reader = require('readline').createInterface({
input: process.stdin,
output: process.stdout
});
reader.on('line', (line) => {
lines.push(line);
});
reader.on('close', () => {
console.log(lines[0]); //添字を使う。
console.log(lines[1]);
console.log(lines[2]);
});
入力値
みたらしだんご
あずきだんご
三色団子
実行結果
みたらしだんご
あずきだんご
三色団子
JSでn行の文字列を受け取るの巻
process.stdin.resume();
process.stdin.setEncoding('utf8');
var lines = [];
var reader = require('readline').createInterface({
input: process.stdin,
output: process.stdout
});
reader.on('line', (line) => {
lines.push(line);
});
reader.on('close', () => {
// console.log(lines[0]);
for (let i = 1; i <= lines[0]; i++ ){
console.log(lines[i]);
}
});
入力値
4
みたらしだんご
あずきだんご
三色団子
磯辺焼き
実行結果
みたらしだんご
あずきだんご
三色団子
磯辺焼き
JSでスペース区切りの文字列を受け取るの巻
process.stdin.resume();
process.stdin.setEncoding('utf8');
var lines = [];
var reader = require('readline').createInterface({
input: process.stdin,
output: process.stdout
});
reader.on('line', (line) => {
lines.push(line); //ここ
input_string = line;
});
reader.on('close', () => {
var values = input_string.split(" "); //ここ
// console.log(lines[0]);
for (let i = 0; i < lines[0]; i++) {
console.log(values[i]);
}
});
入力値
4
mitarashi azuki sanshoku isobe
実行結果
mitarashi
azuki
sanshoku
isobe
???のコーナー
日本語だと実行結果がundefinedになる
入力値
4
みたらしだんご
あずきだんご
三色団子
磯辺焼き
実行結果
磯辺焼き
undefined
undefined
undefined
JSでカンマ区切りの文字列を受け取るの巻
process.stdin.resume();
process.stdin.setEncoding('utf8');
var lines = [];
var reader = require('readline').createInterface({
input: process.stdin,
output: process.stdout
});
reader.on('line', (line) => {
lines.push(line); //ここ
input_string = line;
});
reader.on('close', () => {
var values = input_string.split(","); //ここ
// console.log(lines[0]);
for (let i = 0; i < lines[0]; i++) {
console.log(values[i]);
}
});
入力値
4
mitarashi,azuki,sanshoku,isobe
実行結果
mitarashi
azuki
sanshoku
isobe
// 確認中
// process.stdin.resume();
// process.stdin.setEncoding('utf8');
// var lines = [];
// var reader = require('readline').createInterface({
// input: process.stdin,
// output: process.stdout
// });
// reader.on('line', (line) => {
// lines.push(line);
// });
// reader.on('close', () => {
// console.log(lines[0]);
// });