javascript - 这道题应该如何做?
PHP中文网
PHP中文网 2017-04-11 11:39:16
[JavaScript讨论组]

用javascript来解决!!!求解!

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(12)
天蓬老师
function test(str){
    return str.replace(/\b[\w\']+\b/g,function(match){
        return match.toLowerCase().replace(/^./,function(match){
            return match.toUpperCase();
        });
    });
}
[
    "I'm a little tea pot",
    "sHoRt AnD sToUt",
    "HERE IS MY HANDLE HERE IS MY SPOUT"
].forEach(function(str){
    console.log(test(str))
})
迷茫

作业应该自己做。
不过可以提示一下,个人以为用字符串的replace方法配合正则表达式最简单。

PHPz

一行搞定,简洁明了

function titleCase(str) {
    return str.toLowerCase()
              .replace(/(^\w|\s\w)/g , fl => fl.toUpperCase());
}
PHPz
var arr=["I'm a little tea pot","sHoRt AnD sToUt","HERE IS MY HANDLE HERE IS MY SPOUT"];
function TransformCase(str){
     return str.replace(/\b\w+\b/g, function(word){
          return word.substring(0,1).toUpperCase()+word.substring(1).toLowerCase();}
      );
}
arr.forEach(function(str){
     console.log(TransformCase(str))
})
PHPz

没太理解问题,按照我的理解,我觉得应该这样做

  1. 先全部转换成小写字母

  2. 空格分隔

  3. 将每个单词的首字母换成大写

  4. 用空格拼起来,return

第一种情况“should return a string”没太明白

PHPz

titleCase 改成类似下面这样试试看是否符合要求:

function titleCase(s) {
    let arrStr = s.toLowerCase().split(" ");
    return arrStr.map(x => x.substring(0,1).toUpperCase() + x.substring(1)).join(" ");
}
巴扎黑

第一个加上.join("")变成一个字符串,后三个都是加上.join(" ").replace(/b(w)|s(w)/g,function(m){return m.toUpperCase()}),楼主看看好用不

PHP中文网
var str = "I'm a little tea pot"
str
.split(' ').map(v => {
  return v[0].toUpperCase() + v.slice(1)
})
.join(' ')
高洛峰

codewar?直接解锁答案不就行了

PHP中文网

起初我也是想通过split, join实现的,可是这么做需不需要考虑到各个单词之间的空格数量呢,所以去匹配每个单词是更合理的。以前我也不知道这么做,算是学习到了。
想起了以前刚学c语言的时候,可是一个字符一个字符遍历的,哈哈,虽然这个方法笨,可是肯定能实现。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号