Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不理解如何在英语中大写文本_Javascript_Angularjs - Fatal编程技术网

Javascript 不理解如何在英语中大写文本

Javascript 不理解如何在英语中大写文本,javascript,angularjs,Javascript,Angularjs,我的朋友帮助我用AngularJS编写了一个自定义过滤器,以帮助我将对象中的一个值资本化为数组中的一个值。但是没有时间向我解释他做了什么。我只是想知道是否有人能帮助我理解这段代码: .filter('capitalizetext', function() { return function(name) { name = ( name === undefined || name === null ) ? '' : name; return name.toString().toLowerCas

我的朋友帮助我用AngularJS编写了一个自定义过滤器,以帮助我将对象中的一个值资本化为数组中的一个值。但是没有时间向我解释他做了什么。我只是想知道是否有人能帮助我理解这段代码:

.filter('capitalizetext', function() {
   return function(name) {
name = ( name === undefined || name === null ) ? '' : name;
return name.toString().toLowerCase().replace( /\b([a-z])/g, function(change) {
  return change.toUpperCase();
  });
 };
})
我不明白的第一部分是:

name = ( name === undefined || name === null ) ? '' : name;
return name.toString().toLowerCase().replace( /\b([a-z])/g,
他为什么这样做

我不明白的第二部分是:

name = ( name === undefined || name === null ) ? '' : name;
return name.toString().toLowerCase().replace( /\b([a-z])/g,
我知道他正在将字符串更改为所有小写,以便最终将其转换为大写字符串,但这是什么:
(/\b([a-z])/g

没有真正了解他在那里的所作所为

请帮忙!

在第一部分:

name = ( name === undefined || name === null ) ? '' : name;
他检查字符串在他的“定义”中是否真实,检查它是未定义的还是空的(因为空/未定义的字符串可能会引发错误),否则,他将它设置为空字符串以避免错误

第二部分,他使用
regex
表达式将字符串修改为过滤器规范。你可以阅读
regex
表达式。我对regex不太熟悉,但我认为当他将所有字符转换为小写时,你的思路是正确的,请查看上面的注释以了解regex解释,但是,如果这样做的话如果是这样的话,他可以这么做

string = string.toLowerCase()
string = string.substr(0, 1).toUpperCase() + string.substr(1);
这确保以后使用时,
name
永远不会为null或未定义

return name.toString().toLowerCase().replace( /\b([a-z])/g, function(change) {
  return change.toUpperCase();
  });
 };
首先将所有内容更改为小写,并将每个单词的第一个字符替换为大写版本:

例如,假设
name=“大写我”

然后

  • name.toString().toLowerCase();//=>name=“大写我”
  • /\b([a-z])/g//表示查找每个单词的第一个字母,以便匹配“c”和“m”
  • replace(/\b([a-z])/g,函数(change){return change.toUpperCase();}}//将'c'更改为'c','m'更改为'm';

  • 第一部分只是确保如果使用未定义或null参数调用函数,它将返回空字符串。第二部分使用a查找单词边界(
    \b
    )后面的所有字母,并将其更改为大写。使用带有
    .replace()
    的正则表达式可以将每个单词大写,例如。,“你好吗?”会变成“你好吗?”谢谢,这肯定能解释它!那么/\是用来做大写的吗?