【问题标题】:How to capitalize text inside input box , first letter of sentence and letter after fullstop如何将输入框中的文本、句子的第一个字母和句号后的字母大写
【发布时间】:2016-01-18 08:12:12
【问题描述】:

我已经在这里将每个句子的第一个字母大写,但是当我尝试进一步输入大写单词时,它也会被转换为小写。我还需要在句号后将第一个字母大写。

输入:汤姆很开心。汤姆很伤心

我的解决方案的输出:Tom is happy.tom is sad

预期输出:汤姆很开心。汤姆很伤心

var app = angular.module('myApp', []);

app.filter('capitalizeFirst', function () {
return function (input, scope) {
    if(input!=input.toUpperCase())
    var text = input.substring(0, 1).toUpperCase() + input.substring(1).toLowerCase(); 
    return text;
}
});

app.directive('capitalizeFirst', ['$filter', function ($filter) {
return {
    require: 'ngModel',
    link: function (scope, element, attrs, controller) {
        controller.$parsers.push(function (value) {

            var transformedInput = $filter('capitalizeFirst')(value);
            if (transformedInput !== value) {

                var el = element[0];
                el.setSelectionRange(el.selectionStart, el.selectionEnd);
                controller.$setViewValue(transformedInput);
                controller.$render();
            }
            return transformedInput;

        });
    }
};
}]);

function MyCtrl($scope, $filter) {
$scope.name = $filter('capitalizeFirst')('apple');
}

【问题讨论】:

标签: jquery regex angularjs forms validation


【解决方案1】:

使用string#split 函数将字符串分成句子。这将创建一个数组。我们可以使用map函数修改数组的所有元素。

这个函数有两个参数。一个用于数组元素,另一个用于索引。将数组重新组合在一起时,我们希望使用 . 分隔符连接元素。第一句不是以句号开头的,所以我们要考虑不同的索引。

var par = document.getElementById("my-par");
var text = par.innerHTML;

var sentences = text.split('.').map(function(input, index) {
    if (index === 0) {
        return input.charAt(0).toUpperCase() +
        input.substring(1).toLowerCase();
    }
    else {
        return input.substring(0,1) + input.charAt(1).toUpperCase() +
        input.substring(2).toLowerCase();
    }
}).join('. ');


alert(sentences);

http://jsfiddle.net/9bgd8ztg/

【讨论】:

    猜你喜欢
    • 2012-06-23
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    • 2016-04-11
    • 1970-01-01
    • 1970-01-01
    • 2011-07-20
    • 2013-05-21
    相关资源
    最近更新 更多