在为字符串创建自定义regex-camelCase解决方案时,Javascript错误的结果
Javascript wrong outcome when crafting a custom regex camelCase solution for strings
我正在尝试一个Javascript挑战,他的指令是:
Complete the method/function so that it converts dash/underscore delimited
words into camel casing. The first word within the output should be
capitalized only if the original word was capitalized.
Examples:
toCamelCase("the-stealth-warrior")
// returns "theStealthWarrior"
toCamelCase("The_Stealth_Warrior")
// returns "TheStealthWarrior"
我的解决方案是:
function toCamelCase(str) {
console.log(str);
var camel = str.replace(/(?:^'w|[A-Z]|-'w|_'w)/g, function(letter, index) {
return index === 0 && letter === letter.toLowercase ?
letter.toLowercase : letter.toUpperCase();
}).replace(/(-|_)/g, "");
console.log(camel);
return camel;
}
在测试用例中使用我的代码时的输出是:
toCamelCase('the_stealth_warrior') did not return correct value -
Expected: theStealthWarrior, instead got: TheStealthWarrior
有什么想法吗?我觉得我在三元运算符中的条件应该是返回小写的t.
这里的这段代码导致了您的问题:
function(letter, index) {
return index === 0 && letter === letter.toLowercase ?
letter.toLowercase : letter.toUpperCase();
}
您可能打算使用toLowerCase()
,但您提供了对letter
不存在的属性的引用。由于toLowercase
不存在,它将返回undefined
,这将导致您的条件始终返回false。
将行更改为:
function(letter, index) {
return index === 0 && letter === letter.toLowerCase() ?
letter.toLowerCase() : letter.toUpperCase();
}
把它简化为怎么样
function toCamelCase(str) {
return str.replace(/[-_](.?)/g, function(match, p1) {
return p1.toUpperCase();
})
}
document.write(toCamelCase("the-stealth-warrior") + "<br>");
document.write(toCamelCase("The_Stealth_Warrior") + "<br>");
解释:
[-_]
查找-
或_
(.?)
跟在任何其他字符后面,并将该其他字符放在一个组中。
然后使用g
标志通过自定义回调调用.replace()
来进行所有匹配。
自定义回调将传递完整匹配作为第一个参数,并传递匹配中的任何组作为后续参数。由于我们想将其转换为第一个组的大写版本,所以我们只需将第二个参数用return p1.toUpperCase()
大写,然后将整个匹配替换为第一个匹配组的大写。然后将CCD_ 12转换为CCD_。
这会跳过前导字符,因为它之前没有-
或_
这会跳过任何尾随的-
或_
,因为后面没有字符。
相关文章:
- JavaScript错误:Microsoft JScript运行时错误:应为对象
- 将字符串拆分为数组时出现JavaScript错误
- 处理JSON字符串会导致JavaScript错误
- 使用AJAX在剑道网格中分组时出现Javascript错误
- Ajax对web URL的调用导致javascript错误
- 为什么当我尝试在Ionic中使用列表时会出现此JavaScript错误
- 可以't解决Javascript错误
- django出现神秘的javascript错误
- JavaScript错误无效的限定符
- 使用主题运行时portlet liferay时出现Javascript错误
- 绑定函数时在IE7中未实现Javascript错误
- Javascript错误:未捕获引用错误:未定义编辑
- eventListener出现JavaScript错误
- sharepoint站点的internet explorer中出现Javascript错误
- LoadControl HttpCompileException自定义服务器控件JavaScript错误
- 销毁Bootstrap popover时出现Javascript错误
- 无法加载Javascript错误XMLHttpRequest
- 使用JSON.parse时出现无效字符javascript错误
- 修复Javascript错误
- 模板字符串上的netbeans javascript错误(backticks)