javascript - 在 Coderbytes Letter Changes 练习中处理数字和特殊字符时遇到问题
问题描述
您好,到目前为止,我还没有找到任何可以解决我遇到的问题的东西。在本练习中,唯一需要更改的是字母字符。但是,在测试用例中,它包括数字和特殊字符,它们也会更改,它们不应该更改。
我有以下代码:
function LetterChanges(str) {
let newTxt = ""; // stores string after changing each character to the next in the alphabet
let newTxt2 = '';
//iterate through the string
for(let i=0;i<str.length;i++){
switch(str[i]){
case ' ':
break;
case 'z':
newTxt = 'a';
break;
case 'Z':
newTxt = 'A';
break;
default:
newTxt = newTxt.concat(String.fromCharCode(str.charAt(i).charCodeAt(0) + 1));
break;
}
//uppercase vowels
switch(newTxt.charAt(i)){
case 'a': case 'e': case 'i': case 'o': case 'u':
newTxt2 += newTxt.charAt(i);
break;
default:
newTxt2 += newTxt.charAt(i);
break;
}
}
str = newTxt;
return str;
}
如果当前字符等于特殊字符或使用正则表达式的数字,我可以使用 if/else 或嵌套开关的默认设置,只需将字符添加回来而不更改,如果它没有更改?
我还是 Javascript 的新手。我已经在 Google 上搜索了一个多小时。
谢谢
解决方案
经过几个小时的研究并尝试了不同的方法,我终于找到了解决方案:
const LetterChanges = str => {
let newTxt = str.replace(/[a-z]/gi, function(c){
switch(c){
case 'z': return 'a';
case 'Z': return 'A';
default: return String.fromCharCode(1+c.charCodeAt(0));
}
});
return newTxt.replace(/[aeiou]+/g, function(vowel){
return vowel.toUpperCase();
});
}
谢谢
推荐阅读
- uibutton - 尝试在点击时更改按钮背景图像时出现错误
- google-analytics - 如何从 GA 销售网站视图中排除网络应用流量
- node.js - 如何在其他一些 js 文件中使用导出对象
- excel - 如何在不设置引用的情况下从另一个 Office 应用程序打开 Excel?
- reactjs - 无法在地图上渲染路径
- rest - 如何使用 Trello REST API 获取当前用户?
- django - get_context_data 破破 django listview
- python - python / geopandas中跨空间(或空间平滑)的密度
- java - 现有应用程序从 Cassandra DB 迁移到 Cosmos DB
- laravel - 如何将变量从控制器传递到邮件应用程序