以下为ChatGPT自动生成的解答,正确与否请自行判断。
BFE.devAI解答 - JavaScript 代码题
119. 创建一个tokenizer
function* tokenize(input) {
const OPERATOR = /[+\-*/()]/;
const NUMBER = /\d/;
let tokens = "";
for (const char of input) {
if (char === " ") continue;
if (char.match(OPERATOR)) {
if (tokens !== "") {
yield tokens;
tokens = "";
}
yield char;
continue;
}
if (char.match(NUMBER)) {
tokens += char;
continue;
}
}
if (tokens !== "") {
yield tokens;
}
}
判断字符是否为运算符或数字,把连续的数字拼接成一个token然后yield出去就行了。注意空格需要跳过。示例代码中用了正则表达式匹配,也可以用if
语句逐个进行判断。