JaimeCheng / zxx-quiz-summary

zxx-quiz 小测收集总结
https://github.com/zhangxinxu/quiz
1 stars 0 forks source link

JS基础测试40 - 字符串转换 #19

Open JaimeCheng opened 4 years ago

JaimeCheng commented 4 years ago

题目: js40

原issue

回答:

// 我的回答 10分
// 1
function toCamelCase (str) {
  return str.replace(/\-(\w)/g, function (all, letter) {
    return letter.toUpperCase();
  });
}
// 2
function toDashJoin (str) {
  return str.replace(/([A-Z])/g, "-$1").toLowerCase();
}
// 3
function toCapitalize (str) {
  return (' ' + str).replace(/\ (\w)/g, function (all, letter) {
    return ' ' + letter.toUpperCase();
  }).substr(1);
}
// 4
function toBetterUrl (str) {
  return str.toLowerCase().replace(/\s+/g, "-")
}
console.log(toCamelCase('abc-bcd-dfd'))
console.log(toDashJoin('abcDfgEdf'))
console.log(toCapitalize('i i Like css!'))
console.log(toBetterUrl('CSS  value   type'))

满分回答1 | 满分回答2

总结:

  1. 考虑多空格数字等;
  2. 掌握正则表达式的重要性!

> 在线demo <

JaimeCheng commented 4 years ago

zxx: 本期要点

  1. 通常字符处理最简洁的方式一定是正则替换,所以学好正则表达式是程序开发人员必须要掌握的。
  2. 测试地址:http://quiz.xiliz.com/qunit40.html 大家可以把自己代码粘贴进去看看结果。
  3. 题3是每个单词首字母大写,it's这种书写s不大写,这一题多空格没必要转换成1个。题4多空格应该转换成一个短横线(.replace(/\s+/g, '-')),不是完整URL处理,而是一个小小的部分。
  4. 题1原来就是驼峰的,不要再处理了。后面是数字的,短横线不用保留。
  5. 通常写业务代码,避免对原型进行方法扩展,浏览器以后可能会原生支持。例如浏览器原生支持toCapitalize方法,但是规则跟你的不一样,于是冲突产生。另外一个原因不方便我测试。
  6. 其他就很基本,不具体展开了。