Javascript 我遇到以下错误:无法调用方法';更换';在String.toJadenCase处未定义的
当我传递字符串“如果我们的眼睛不是真的,镜子怎么可能是真的”作为参数时,我得到了错误。它应该返回大写的每个单词,如:“如果我们的眼睛不是真的,镜子怎么可能是真的”Javascript 我遇到以下错误:无法调用方法';更换';在String.toJadenCase处未定义的,javascript,regex,string,uppercase,Javascript,Regex,String,Uppercase,当我传递字符串“如果我们的眼睛不是真的,镜子怎么可能是真的”作为参数时,我得到了错误。它应该返回大写的每个单词,如:“如果我们的眼睛不是真的,镜子怎么可能是真的” 一般来说,我对JS和编程都是新手,所以这可能很简单 toJadenCase方法正在字符串的上下文中运行,因此使用this关键字检索文本。您还需要稍微修改一下正则表达式: String.prototype.toJadenCase=函数(){ 返回this.replace(/\w\S*/g,函数(txt){return txt.char
一般来说,我对JS和编程都是新手,所以这可能很简单 toJadenCase方法正在
字符串的上下文中运行,因此使用this
关键字检索文本。您还需要稍微修改一下正则表达式:
String.prototype.toJadenCase=函数(){
返回this.replace(/\w\S*/g,函数(txt){return txt.charAt(0.toUpperCase()+txt.substr(1.toLowerCase();});
}
var copy=“如果我们的眼睛不是真的,镜子怎么可能是真的”;
警报(copy.toJadenCase())代码>因为您的函数需要一个参数,所以调用它的方法是:
String.prototype.toJadenCase = function (str) {
//...
var capitalize = str;
return capitalize.replace(/^[a-zA-Z]*$/, function(txt){
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
}
这不是你想要的
但是,如果您改用此
,它将起作用:
myStr.toJadenCase(myStr);
(这消除了错误,但您的案例更改代码未按预期工作)您可以使用此
而无需参数。正则表达式\b
匹配单词边界处的字符
return this.replace(/^[a-zA-Z]*$/, function(txt){
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
});
正则表达式不处理特殊情况,因为不是
。必须匹配后跟字符的空格。因此,您可以使用
String.prototype.toJadenCase = function () {
return this.replace(/\b./g, function(m){
return m.toUpperCase();
});
}
或者更具体地说,您可以使用/\s[a-zA-Z]/g
您可以看到regex正在运行
用法
String.prototype.toJadenCase = function () {
return this.replace(/\s./g, function(m){
return m.toUpperCase();
});
}
您想让它使用此
,而且您的正则表达式是错误的
str = "How can mirrors be real if our eyes aren't real";
console.log(str.toJadenCase());
我将正则表达式改为使用单词分隔符,并且是全局的
function () {
return this.replace(/\b[a-zA-Z]*\b/g, function(txt){
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();});
}