const rl = require("readline").createInterface({ input: process.stdin }); var iter = rl[Symbol.asyncIterator](); const readline = async () => (await iter.next()).value; void (async function () { // 获取4种类型的数量方法 function getCount(map, type) { if (!map.get(type)) { map.set(type, 1); } else { map.set(type, map.get(type) + 1); } } // Write your code here while ((line = await readline())) { const len = line.length; let map = new Map(); // 注意赋初始值 map.set("String", 0); map.set("Blank", 0); map.set("Number", 0); map.set("Other", 0); for (let i = 0; i < len; i++) { // 注意 isNaN(' ') == false if (isNaN(line[i]) || line[i] == " ") { // 英文字符 if (/[a-z|A-Z]/.test(line[i])) { getCount(map, "String"); } else if (/\s/.test(line[i])) { // 空格字符 getCount(map, "Blank"); } else { getCount(map, "Other"); } } else { // 数字 getCount(map, "Number"); } } // 注意换行写法 console.log( map.get("String")+'\n'+ map.get("Blank")+'\n'+ map.get("Number")+'\n'+ map.get("Other") ); } })();