【发布时间】:2019-12-23 00:25:56
【问题描述】:
本质上,这个想法是,如果一只老鼠 - O~ - 正对着吹笛者 - P - 那么它就会朝着正确的方向前进。
这是一只向左走的老鼠:O~
这是一只向右走的老鼠:~O
我们想计算有多少“聋鼠”存在于一根绳子中——有多少是面向错误的方向。
这里有 1 只聋鼠:P O~ O~ ~O O~
我的逻辑是首先检查 Piper 是在字符串的左侧还是右侧。
如果他不是,那么我们需要根据Piper在字符串中的位置来拆分字符串,然后计算左侧有多少只老鼠没有面对他,右侧有多少只老鼠没有面对他。
var countDeafRats = function(town) {
town = town.replace(/[ ]/g, '');
let deafCount = 0;
//if piper's on the left
if (town[0] === 'P') {
for (let i = 0; i < town.length; i++) {
if (town[i] === '~O') {
deafCount ++;
}
}
}
//if piper's on the right
if (town[town.length - 1] === 'P') {
for (let j = 0; j < town.length; j++) {
if (town[j] === 'O~') {
deafCount ++;
}
}
}
let rats = town.split('P');
console.log('ratssss', rats);
let leftRats = [];
let rightRats = [];
return deafCount;
}
console.log(countDeafRats("~O~O P ~O~O"));
在上面的例子中,这里是一组老鼠:[ '~O~O', '~O~O' ] 所以右边有两只老鼠走错了路(聋老鼠)。
我想做的是将左右老鼠推入各自的阵列中,然后分别计算每个阵列中的聋鼠。
但我无法将字符串 ~O~O 拆分为 ~O 或 O~。
我想为leftRats 获取['~O', '~O'],为rightRats 获取['~O', '~O']。
我试过了:
leftRats.push(rats[0].split('~O'));
rightRats.push(rats[1].split('O~'));
console.log('leftRatsssss', leftRats);
console.log('rightRatssss', rightRats);
但它做的事情与预期的完全不同:
leftRatsssss [ [ '', '', '' ] ]
rightRatssss [ [ '~', 'O' ] ]
Split 不会将字符串 by 作为参数给出的字符串拆分。那么,这就是我的问题的真正意义所在 - 你如何将字符串拆分为特定的字符集?
即如果我想将字符串'the' 拆分为'he',我希望'the' 变为['t', 'he'] - 我已经尝试过正则表达式来处理这种情况?
console.log("the".split(/[he]/gi));
这似乎与我想要的相反。那么,有什么建议可以用给定的字符集分割字符串吗?
【问题讨论】:
标签: javascript arrays string