在javascript中将字符串转换为句子大小写

在javascript中将字符串转换为句子大小写,javascript,jquery,Javascript,Jquery,我希望输入的字符串在任何情况下都应转换为句子大小写 像 大家好,我是德普。谢谢大家回答我的问题 皈依 大家好,我是德普。谢谢大家回答我的问题 我想出了这种RegExp: var rg = /(^\w{1}|\.\s*\w{1})/gi; var myString = "hi all, this is derp. thank you all to answer my query."; myString = myString.replace(rg, function(toReplace) {

我希望输入的字符串在任何情况下都应转换为句子大小写

大家好,我是德普。谢谢大家回答我的问题

皈依

大家好,我是德普。谢谢大家回答我的问题


我想出了这种RegExp:

var rg = /(^\w{1}|\.\s*\w{1})/gi;
var myString = "hi all, this is derp. thank you all to answer my query.";
myString = myString.replace(rg, function(toReplace) {
    return toReplace.toUpperCase();
});
尝试演示

函数语句用例(strval){
var newstrs=strval.split(“.”);
var finalstr=“”;
//警报(strval);

对于(var i=0;i试试这个,它对您来说很好。它也适用于具有前导空格的字符串

var string="hi all, this is derp. thank you all to answer my query.";
var n=string.split(".");
var vfinal=""
for(i=0;i<n.length;i++)
{
   var spaceput=""
   var spaceCount=n[i].replace(/^(\s*).*$/,"$1").length;
   n[i]=n[i].replace(/^\s+/,"");
   var newstring=n[i].charAt(n[i]).toUpperCase() + n[i].slice(1);
   for(j=0;j<spaceCount;j++)
   spaceput=spaceput+" ";
   vfinal=vfinal+spaceput+newstring+".";
 }
 vfinal=vfinal.substring(0, vfinal.length - 1);
 alert(vfinal);
var string=“大家好,我是derp。谢谢大家回答我的问题。”;
var n=字符串。拆分(“.”);
var vfinal=“”

对于(i=0;i你也可以试试这个

<script>
var name="hi all, this is derp. thank you all to answer my query.";
var n = name.split(".");
var newname="";
for(var i=0;i<n.length;i++)
{
var j=0;
while(j<n[i].length)
{
if(n[i].charAt(j)!= " ")
    {
        n[i] = n[i].replace(n[i].charAt(j),n[i].charAt(j).toUpperCase());
            break;
    }
else
  j++;
}

newname = newname.concat(n[i]+".");
 }
alert(newname);
 </script>

var name=“大家好,我是derp。谢谢大家回答我的问题。”;
var n=名称。拆分(“.”);
var newname=“”;

对于(var i=0;i这是我最终使用的解决方案:

str = 'hi all, this is derp. thank you all to answer my query.';
temp_arr = str.split('.');
for (i = 0; i < temp_arr.length; i++) {
temp_arr[i]=temp_arr[i].trim()
temp_arr[i] = temp_arr[i].charAt(0).toUpperCase() + temp_arr[i].substr(1).toLowerCase();
}
str=temp_arr.join('. ') + '.';
return str;
str='大家好,我是derp。谢谢大家回答我的问题';
temp_arr=str.split('.');
对于(i=0;i
以下代码按预期为我工作

   function toSentenceCase(inputString) {
        inputString = "." + inputString;
   var result = "";
   if (inputString.length == 0) {
       return result;
   }

   var terminalCharacterEncountered = false;
   var terminalCharacters = [".", "?", "!"];
   for (var i = 0; i < inputString.length; i++) {
       var currentChar = inputString.charAt(i);
       if (terminalCharacterEncountered) {
           if (currentChar == ' ') {
               result = result + currentChar;
           } else {
               var currentCharToUpperCase = currentChar.toUpperCase();
               result = result + currentCharToUpperCase;
               terminalCharacterEncountered = false;
           }
       } else {
           var currentCharToLowerCase = currentChar.toLowerCase();
           result = result + currentCharToLowerCase;
       }
       for (var j = 0; j < terminalCharacters.length; j++) {
           if (currentChar == terminalCharacters[j]) {
               terminalCharacterEncountered = true;
               break;
           }
       }
   }
        result = result.substring(1, result.length - 1);
   return result;
 }
函数到EntenceCase(inputString){
inputString=“.”+inputString;
var结果=”;
如果(inputString.length==0){
返回结果;
}
var terminalCharacterOccessed=false;
变量terminalCharacters=[”、“?”、“!”];
对于(变量i=0;i
我编写了一个基于FSM的函数来合并多个空白字符并将字符串转换为句子大小写。它应该很快,因为它不使用复杂的正则表达式或
split
,并且假设您的JavaScript运行时具有高效的字符串连接,那么这应该是最快的方法。它还允许您巧妙地添加特殊情况例外

通过使用比较字符代码的函数替换空白正则表达式,性能可能会进一步提高

函数到事件案例(str){
变量状态={
结束时间:0,
EndOfSentenceWS:1,//在句子结束后的空白处
空白:2,
字:3
};
var状态=状态。EndOfSentence;
var start=0;
var-end=0;
var输出=”;
var-word=“”;
功能专用词(word){
如果(word==“i”)返回“i”;
如果(word==“assy”)返回“assembly”;
如果(word==“Assy”)返回“Assembly”;
返回词;
}
对于(变量i=0;i
此脚本将在每行打印…..星期日星期一星期三星期六

let rg = /(^\w{1}|\.\s*\w{1})/gi;

const days = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'];

for(let day of days) {
    console.log(day.replace(rg, function(toReplace) {
    return toReplace.toUpperCase();
}))
这是我对这本书的修改,是为了改成书名。 您可以立即
toLowerCase
字符串,然后只
toUpperCase
每个单词的第一个字母。变成一个非常简单的1行:let rg = /(^\w{1}|\.\s*\w{1})/gi; const days = ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday']; for(let day of days) { console.log(day.replace(rg, function(toReplace) { return toReplace.toUpperCase(); }))