【发布时间】:2018-10-02 20:27:15
【问题描述】:
我想在元音出现之前删除字符串中的所有辅音,然后用“r”替换它。 这意味着“scooby”将变为“rooby”,“xylographer”将变为“rographer”等等。这是我想出的算法: 1. 检查输入类型是否不是字符串。 2. 使用一个变量(newStr) 来保存小写转换和分词。 3. 声明一个变量(arrWord)来保存数组的长度。 4. 另一个名为 regex 的变量,用于检查字符串是否以辅音开头 5. 变量 newArr 保存最终结果。 6. 搜索数组,如果字符串不以辅音开头 加入它并返回它。 7. Else 继续寻找单词中第一个元音出现的位置。 8.找到后,删除元音出现前的所有字符(辅音) 并用 r 替换它们。 9. 一起加入阵列。
我已经能够想出这个:
const scoobyDoo = str => {
if(typeof str !== 'string'){
return 'This function accepts strings only';
}
let newStr = str.toLowerCase().split('');
let arrWord = newStr.length;
let regex = /[aeiou]/gi;
for (let i = 0; i < arrWord; i++){
if (newStr[0].match(regex)) {
let nothing = newStr.join('');
return nothing;
}
else {
let vowelIndex = newStr.indexOf(str.match(regex)[0]);
newStr.splice(0, vowelIndex, 'r');
return newStr.join('');
}
}
}
console.log(scoobyDoo('scOoby'));
我通过大写第一个元音索引再次测试了该程序,而不是“rooby”,我得到了“rscooby”。为什么呢?
【问题讨论】:
-
这是一个数组。
var newStr = str.toLowerCase().split('');所以你不能在整个数组上调用.match- 选择数组中的一个元素来调用它的字符串方法。
标签: javascript string