关于javascript:字符串以大写每个句子的开头字母

Format lowercased string to capitalize the begining of each sentence

我有一根绳子

FIRST SENTENCE. SECOND SENTENCE.

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

例如:

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

只有第一句话是大写的。

我有

string.prototype.capitalize=function()。{返回this.charat(0).touppercase()+this.slice(1);}

功能

有人知道怎么解决吗?


如果只想将每个句子的第一个单词(而不是每个单词)大写,则使用此函数:

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

JSFiddle在这里

如果你想保留句子的其余部分的格式,只需将第一个字母大写,就可以将txt.substr(1).toLowerCase()改为txt.substr(1)


试试这个

1
2
3
4
5
6
7
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.'))

imoB

参考


这个JS函数将把句子大小写应用到初始句子和以结尾的句子后面的任何句子。?!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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."));


我想这个对你有用

1
asd

JavaScript

1
2
3
4
5
6
7
8
9
10
    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/