格式化小写字符串以大写每个句子的开头

时间:2013-12-07 13:25:48

标签: javascript regex string lowercase capitalization

我有一个像

这样的字符串

FIRST SENTENCE. SECOND SENTENCE.

我想以这种方式小写字符串来大写每个句子的第一个字母。

例如:

string = string.toLowerCase().capitalize();

只有第一句话大写。

我有

String.prototype.capitalize = function(){         return this.charAt(0).toUpperCase()+ this.slice(1);     }

功能

有谁知道如何解决?

4 个答案:

答案 0 :(得分:10)

如果你只想把每个句子的第一个单词(不是每个单词)都大写,那么使用这个函数:

function applySentenceCase(str) {
    return str.replace(/.+?[\.\?\!](\s|$)/g, function (txt) {
        return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
    });
}

JSFiddle here

如果您想保留句子其余部分的格式并仅将首字母大写,请将txt.substr(1).toLowerCase()更改为txt.substr(1)

答案 1 :(得分:4)

试试这个

function toTitleCase(str) {
    return str.replace(/\w\S*/g, function (txt) {
        return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
    });
}

alert(toTitleCase('FIRST SENTENCE. SECOND SENTENCE.'))

DEMO

Reference

答案 2 :(得分:1)

此JS函数会将句子大小写应用于初始句子以及以结尾的句子之后的所有句子。 ? !

function applySentenceCase(str) {
    var txt = str.split(/(.+?[\.\?\!](\s|$))/g);
    for (i = 0; i < (txt.length-1); i++) {
        if (txt[i].length>1){
            txt[i]=txt[i].charAt(0).toUpperCase() + txt[i].substr(1).toLowerCase();
        } else if (txt[i].length==1) {
            txt[i]=txt[i].charAt(0).toUpperCase();
        }
    }
    txt = txt.join('').replace(/\s\s/g,' ');
    return txt;
}

alert(applySentenceCase("LOREM IPSUM DOLOR SIT AMET, CONSECTETUR ADIPISCING ELIT. sed congue hendrerit risus, ac viverra magna elementum in. InTeRdUm Et MaLeSuAdA fAmEs Ac AnTe IpSuM pRiMiS iN fAuCiBuS. phasellus EST purus, COMMODO vitae IMPERDIET eget, ORNARE quis ELIT."));

答案 3 :(得分:0)

我认为这对你有用

<a style="cursor:pointer;" onclick="capitaliseFirstLetter('hey wassup baby')">asd</a>

<div type="text" id="texts"></div>

的Javascript

    function capitaliseFirstLetter(string)
{
    var array = string.split(" ");
    for(i=0;i<array.length;i++){
        var n = array[i];
        var a = n.charAt(0).toUpperCase() + n.slice(1);
        alert(a);
    }

}

访问:http://jsfiddle.net/rVnFU/