AngularJS中length方法不统计字符串末尾空格的问题咨询
问题解答
为什么末尾空格不会被统计?
这个问题大概率是AngularJS的默认行为在搞鬼!
你应该是用ng-model绑定输入框来获取字符串的吧?AngularJS的ng-model默认开启了ng-trim="true"配置——它会自动去除绑定值的首尾空格。这个设计是为了处理用户输入时的无心操作:很多人输入内容后会不小心多打几个空格,框架自动帮你清除这些无意义的空格,避免后续业务逻辑(比如表单校验、数据存储)被干扰。
所以你输入的"Hello "会被自动处理成"Hello",长度自然是5;而"Hello u"里的空格在字符串中间,不会被ng-trim处理,所以长度是7(H、e、l、l、o、空格、u,共7个字符)。另外提一句,你代码里的lenght是拼写错误,正确的字符串长度属性是length哦。
如何实现对字符串末尾空格的统计?
有两种直接有效的方式:
- 从源头保留原始输入:在绑定
ng-model的输入元素上添加ng-trim="false",比如:
这样AngularJS就不会自动去除首尾空格了,之后用修正后的代码就能得到正确长度:<input ng-model="str" ng-trim="false">$scope.count = $scope.str.length; - 注意:如果字符串已被trim无法恢复:如果你的
$scope.str已经被框架自动trim过,且没有原始输入的备份,那是没法恢复被去掉的首尾空格的。所以优先选择第一种从源头禁用ng-trim的方式。
内容的提问来源于stack exchange,提问作者Layeek
相关产品推荐
相关产品推荐

