Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 缩略中仅大写第一个字母_Javascript_String - Fatal编程技术网

Javascript 缩略中仅大写第一个字母

Javascript 缩略中仅大写第一个字母,javascript,string,Javascript,String,我的挑战是将字符串中每个单词的第一个字母大写,同时确保所有其他字母都是小写。我花了更多的时间,然后我愿意承认这一点,我的代码如下所示。大约完成了95% 它唯一的缺陷是,它返回像“I'm”一样的收缩。出于某种原因,它将收缩视为两个独立的词。我在将第一个字母大写的步骤之后立即放置一个console.log(我在示例中已经注释掉了它)来测试这一点。它返回在同一步中同时大写“I”和“M”。我怎样才能得到它只改变“我” 功能滴定酶(str){ str=str.toLowerCase();//使所有内容都小

我的挑战是将字符串中每个单词的第一个字母大写,同时确保所有其他字母都是小写。我花了更多的时间,然后我愿意承认这一点,我的代码如下所示。大约完成了95%

它唯一的缺陷是,它返回像“I'm”一样的收缩。出于某种原因,它将收缩视为两个独立的词。我在将第一个字母大写的步骤之后立即放置一个console.log(我在示例中已经注释掉了它)来测试这一点。它返回在同一步中同时大写“I”和“M”。我怎样才能得到它只改变“我”

功能滴定酶(str){
str=str.toLowerCase();//使所有内容都小写
str=str.split(“”;//将字符串设置为数组
对于(i=0;i

谢谢您的时间。

我建议您使用
.charAt()
获取字符串的第一个字母,而
.slice()
可以提供字符串的一部分

提示:记下每个单词后,您可以使用
charAt()
取第一个字母,大写,然后取字符串的其余部分并小写

更新:

答复:

函数upperFirstLetterInWords(str){
var totalString=“”;
//从以下句子中摘录:
//对句子中的许多空格使用regex/\s+/g。
var words=str.split(“”);
//把每一个字。。。
//使用for循环,因为我们有一个数组,它是
//比foreach循环或lambda更有效。
for(变量i=0;ilog(大写字母大写(“我是一个小茶壶”)您的问题似乎是在替换表达式中使用了全局匹配

卸下
g

功能滴定酶(str){
str=str.toLowerCase();//使所有内容都小写
str=str.split(//\s+/);//将字符串设置为数组
对于(变量i=0;idocument.body.innerHTML=titleCase(“我是一个小茶壶”)出于好奇,我想看看是否可以在不使用正则表达式的情况下提出另一种javascript解决方案:

var selectedparagration=document.getElementsByTagName('p')[1];
var textUC=[];
函数toTitleCase(元素){
var textLC=element.innerHTML.toLowerCase().split(“”);
对于(变量i=0;i
我是一个小茶壶


我是一个小茶壶

快速提问,但您的挑战是否必须使用JavaScript?您是否可以使用CSS,例如:文本转换:大写;不加评论地投反对票是一种糟糕的态度。请评论一下,这样我才能变得更好。谢谢。即使是家庭作业,OP也尽了最大的努力,但还是做不到。完整的解决方案在这里很好。(尽管我不是那个否决你的人)在我看来,他有一种“教学”的态度,这应该得到奖励。如果你不打算给出完整的答案,那就添加一条评论。我建议你测试(并修复)你的代码,你不会用一个不起作用的解决方案来摆脱否决票。谢谢。成功了!我看到的每个正则表达式都使用了g。我从来没有想到一个字母会让我如此沮丧。@Wesshumaker Reid:
g
意味着它将替换所有匹配项,如果省略它,则只替换第一个匹配项。对你来说,这很好。我不知道您的要求,但我不认为您需要依赖单词边界,您可能只需要使用开始条件:
/^.//code>@WesSchumaker-Reid:我创建了一个额外的方法来保留空白。如果字符串是“I.a.little.tea.pot”?@korogui:那么它将无效。除非指定了此特定条件,否则它超出了问题的范围,并且会引入不必要的复杂性。
function titleCase(str) {

  str = str.toLowerCase(); //make everything lowercase
  str = str.split(" "); //make the string to array

  for(i = 0; i < str.length; i++){
    var strItem = str[i]; //take item in array
    strItem = strItem.replace(/\b./g, function(m){ return m.toUpperCase(); }); //capitalize it
   //console.log(strItem);
   str[i] = strItem; //put changed item back into array
  }

  str = str.join(" "); //turn array back into string
  return str;
}

titleCase("I'm a little tea pot");