7-17 强迫症
原题:
小强在统计一个小区里居民的出生年月,但是发现大家填写的生日格式不统一,例如有的人写 199808
,有的人只写 9808
。有强迫症的小强请你写个程序,把所有人的出生年月都整理成 年年年年-月月
格式。对于那些只写了年份后两位的信息,我们默认小于 22
都是 20
开头的,其他都是 19
开头的。
输入格式:
输入在一行中给出一个出生年月,为一个 6 位或者 4 位数,题目保证是 1000 年 1 月到 2021 年 12 月之间的合法年月。
输出格式:
在一行中按标准格式 年年年年-月月
将输入的信息整理输出。
.
解题思路:
- 引入
readline
模块并创建接口对象:首先将readline
模块引入,并使用createInterface
方法创建一个接口对象rl
。该对象设置了输入流为标准输入。 - 读取输入并存储:通过监听
'line'
事件,将输入存储在数组buf
中。 - 解析输入并处理字符串:将数组
buf
中的第一个元素赋值给变量preStr
,截取除最后两个字符外的子串。将数组buf
中的第一个元素的最后两个字符赋值给变量lastStr
。 - 根据条件生成输出结果:判断
preStr
的长度是否为4,如果是,则将preStr
和lastStr
用连字符连接,输出结果。如果不是,则判断preStr
是否小于22,如果是,则将20与preStr
相连,再拼接上lastStr
输出结果;如果不是,则将19与preStr
相连,再拼接上lastStr
输出结果。 - 输出结果:将生成的结果字符串输出。
.
JavaScript(node)代码:
const r = require("readline");
const rl = r.createInterface({
input: process.stdin
});
let buf = [];
rl.on('line', (input) => buf.push(input));
rl.on('close', () => {
const preStr = buf[0].substr(0, buf[0].length - 2);
const lastStr = buf[0].slice(-2);
console.log(preStr.length == 4 ? (preStr + "-" + lastStr) : (parseInt(preStr) < 22 ? (20 + preStr) : (19 + preStr)) + "-" + lastStr);
});
.