不了解如何在Angular中大写文本

时间:2015-09-03 03:26:35

标签: javascript angularjs

我的朋友帮我在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,

我知道他正在将字符串更改为全部小写,这样他最终可以将其转换为大写字符串,但这是什么:( /\b([a-z])/g

并没有真正遵循他在那里所做的事情。

请帮忙!

2 个答案:

答案 0 :(得分:3)

name = ( name === undefined || name === null ) ? '' : name;

这确保name在以后使用时永远不会为null或未定义。

return name.toString().toLowerCase().replace( /\b([a-z])/g, function(change) {
  return change.toUpperCase();
  });
 };

首先将所有内容更改为小写,并将每个单词的第一个字符替换为大写字母。 \b is a boundary matcher

E.g。假设name = "capItalIze me"

然后

  1. name.toString().toLowerCase(); // => name = "capitalize me"
  2. /\b([a-z])/g // means find first letter of every word so will match "c" and "m"
  3. replace( /\b([a-z])/g, function(change) {return change.toUpperCase();});} // change 'c' to 'C' and 'm' to 'M';

答案 1 :(得分:2)

在第一部分:

name = ( name === undefined || name === null ) ? '' : name;

他检查字符串是否在他的“定义”中是真实的,检查它是否未定义或为null(因为null / undefined字符串可能引发错误),否则如果是,则将其设置为空字符串避免错误。

第二部分他使用regex表达式将字符串修改为过滤器规范。您可以阅读regex表达式here我不是很精通正则表达式,但是当我将所有字符转换为小写时,我认为你是在正确的轨道上,检查上面的注释以获取正则表达式的解释,但是,如果是这种情况,他可以这样做......

string = string.toLowerCase()
string = string.substr(0, 1).toUpperCase() + string.substr(1);
相关问题