获取输入
这一步很简单,用字符串的split方法就可以将所有字符串整合成一个数组;
字符串解析
有效移动字符串只能是A、S、W、D加上一个两位数以内的数字,开头结尾都是固定的,那么我们很容易想到正则表达式;
正则表达式的写法有很多,主要看个人习惯,我定义的正则表达式为:reg=/^[ASWD]\d{1,2}$/
走法
可以先定义一个初始位置position:[0,0]
,后续我们以能与正则表达式匹配上的字符串的移动位置对初始位置进行加减即可;
以下是我的代码:
let str=readline(); //获取输入
let steps=str.split(';'); //整合为数组
let position=[0,0];
let reg=/^[ASWD]\d{1,2}$/ //定义正则表达式
steps.forEach(item=>{ //遍历数组
if(reg.test(item)){ //匹配成功的字符串
switch(item[0]){ //以字符串的第一个字母作为判断加减的依据
case 'A':
position[0]-=item.slice(1)*1; //slice:从下标为1开始截取剩余的字符串,*1是为了转换为number
break;
case 'D':
position[0]+=item.slice(1)*1;
break;
case 'W':
position[1]+=item.slice(1)*1;
break;
case 'S':
position[1]-=item.slice(1)*1;
break;
}
}
})
console.log(position)