今天做的题目是:写一个函数toWeirdCase(),对给定的一个字符串string进行偶数位(包括0)变成大写的操作,字符串string分为单个单词的字符串和多个单词组成的句子。效果应该是这个样子滴:

我是这样写的,写完很有成就感啊,觉得我是最牛逼的,我太厉害了...balabala...:

 function toWeirdCase(string){
//先判断字符串是否是单个单词组成
if(string.indexOf(" ")==-1){//单个单词组成的字符串
var arr1=string.split("");
for(var i=0;i<arr1.length;i++){
//偶数位的字母变成大写
if(i%2==0){
arr1[i]=arr1[i].toUpperCase();
}else{
continue;
}
}
return arr1.join("");
}else{//多个单词组成的字符串,中间有空格
var str2 = "";
//把字符串由空格分割成数组
var arr2 = string.split(' ');
var arr3 = [];
for(var j=0;j<arr2.length;j++){
//把arr2的每一项分割成数组,进行操作
arr3 = arr2[j].split("");
for(var k=0;k<arr3.length;k++){
if(k%2==0){
arr3[k]=arr3[k].toUpperCase();
}else{
continue;
}
}
//str2是arr2的某一项
str2=arr3.join("");
arr2[j]=str2;
}
return arr2.join(" ");
}
}

其实我本来用的不是数组,而是直接用字符串的replace()进行操作的。在这里出现了问题,replace方法的第一个参数可以是字符串也可以是正则表达式,是匹配的;第二个参数可以是字符串也可以是函数,是替换的(字符串/操作)。在我使用的时候替换操作是这样写的:

(部分代码,足够表达)
1 var str1=string;
for(var i=0;i<string.length;i++){
if(i%2==0){
str1=str1.replace(str1.charAt(i),str1.charAt(i).toUpperCase());//在这里str1.charAt(i)是一个字符,会匹配字符串中此字符出现的第一个位置,当一个字符串中有多个此字符时就会出现错误。
}else{
continue;
}
}
return str1;

我看了别人写的代码,瞬间泪奔啊有木有,瞬间觉得被神灵抛弃,我是最搓的那一个...哭=.=.

看这个:

 function toWeirdCase(string){
return string.split(' ').map(function(word){
return word.split('').map(function(letter, index){
return index % 2 == 0 ? letter.toUpperCase() : letter.toLowerCase()
}).join('');
}).join(' ');
}

看这个:

function toWeirdCaseCharacter(chr, index)
{
return index % 2 ? chr.toLowerCase() : chr.toUpperCase();
} function toWeirdCaseWord(word){
return word.split("").map(toWeirdCaseCharacter).join("");
} function toWeirdCase(string){
return string.split(" ").map(toWeirdCaseWord).join(" ");
}

再看这个:

function toWeirdCase(string){
return string.replace(/(\w{1,2})/g,(m)=>m[0].toUpperCase()+m.slice(1))
}

我实在是没力气了,放下网址吧:https://www.codewars.com/kata/weird-string-case/solutions/javascript/all/best_practice

这是我的第一篇博客,用于学习和交流,如果有侵权的地方和错误的地方,请联系小弟,我会立马修改,请不要报警...wuwawuwa.

Codewars编辑题--今天升到了7段的更多相关文章

  1. leetcode算法题(JavaScript实现)

    题外话 刷了一段时间的codewars的JavaScript题目之后,它给我最大的感受就是,会帮助你迅速的提升你希望练习的语言的API的熟悉程度,Array对象.String对象等原生方法,构造函数. ...

  2. [python学习篇][python工具使用篇][1] 编辑,设置等

    1 添加sublime到环境变量 win +r ,输入sysdm.cpl, 在弹出的界面选择高级,选择环境变量,编辑path,添加sublime的安装目录(这是sublime的一种安装方式,另外一种安 ...

  3. NOIP2016考前做题(口胡)记录

    NOIP以前可能会持续更新 写在前面 NOIP好像马上就要到了,感觉在校内训练里面经常被虐有一种要滚粗的感觉(雾.不管是普及组还是提高组,我都参加了好几年了,结果一个省一都没有,今年如果还没有的话感觉 ...

  4. [BUUCTF-Pwn]刷题记录1

    [BUUCTF-Pwn]刷题记录1 力争从今天(2021.3.23)开始每日至少一道吧--在这里记录一些栈相关的题目. 最近更新(2021.5.8) 如果我的解题步骤中有不正确的理解或不恰当的表述,希 ...

  5. SQL Server数据表设计编辑后无法保存处理办法

    关于使用 SQL Server 企业管理器,表[设计]界面,修改数据表字段或类型无法保存的问题处理过程: 使用SQL Server数据库的你是否遇到过每次数据库编辑工具内点击设计修改表字段或类型要保存 ...

  6. 游记——noip2016

    2016.11.18 (day 0) 呆在家. 悠闲地呆在家.. 明后天可能出现的错误: 1)没打freopen.打了ctime: 2)对拍程序忘记怎么写了...忘记随机化种子怎么写了: 3)不知道厕 ...

  7. JabRef 文献管理软件

    JabRef 文献管理软件简明教程 大多只有使用LaTeX撰写科技论文的研究人员才能完全领略到JabRef的妙不可言,但随着对Word写作平台上BibTeX4Word插件的开发和便利应用,使用Word ...

  8. haar-like特征(转载)

    浅析人脸检测之Haar分类器方法  [补充] 这是我时隔差不多两年后, 回来编辑这篇文章加的这段补充, 说实话看到这么多评论很是惊讶, 有很多评论不是我不想回复, 真的是时间久了, 很多细节我都忘记了 ...

  9. 2、转载一篇,浅析人脸检测之Haar分类器方法

    转载地址http://www.cnblogs.com/ello/archive/2012/04/28/2475419.html 浅析人脸检测之Haar分类器方法  [补充] 这是我时隔差不多两年后, ...

随机推荐

  1. Codeforces Round #115 B. Plane of Tanks: Pro 水题

    B. Plane of Tanks: Pro Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/17 ...

  2. iOS开发——UI篇OC篇&TextField作为搜索框的使用

    TextField作为搜索框的使用 在iOS开发中我们经常会使用到搜索框,但是有的时候系统自带的搜索框不足以满足我吗想要的功能,这个时候我们就可以使用自定义的搜索框实现想要的功能. 今天就简单的介绍一 ...

  3. 解决PowerDesigner 反向工程没有注释(备注)

    本文转载自:http://www.cnblogs.com/zhangxb/archive/2012/04/20/2458898.html 1. 列注释 原来代码: {OWNER, TABLE, S, ...

  4. MYSQL查询今天昨天本周本月等的数据

    mysql查询本季度 今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT *FROM表名WHERE TO_DAYS ...

  5. C# 之 Int16 Int32 Int64 的区别

    Int16 值类型表示值介于 -32768 到 +32767 之间的有符号整数. Int32 值类型表示值介于 -2,147,483,648 到 +2,147,483,647 之间的有符号整数. In ...

  6. NODE编程(一)--Node功能的组织和重用

    Node开发面对的两个问题: 1.如何组织代码 2.如何进行异步编程. 一.Node功能的组织和重用 Node模块允许你从被引入文件中选择要暴露给程序的函数和变量.如果模块返回的函数或变量不止一个,那 ...

  7. vs2010 调试C++程序 快捷键

    命令名 快捷键 说明 调试.应用代码更改 Alt + F10 启动生成操作,利用它可以通过“编辑并继续”功能应用对正在调试的代码所作的更改. 调试.自动窗口 Ctrl + D,Ctrl + A 显示“ ...

  8. python(1) - 列表和元组

    列表(list) 列表是经常用到的一种数据类型,是一组有序的数据集合,可以将各种数据有序的存放在列表中,并且可以对其进行增删改查,以及遍历. 列表就是为了使变量能够存储更多的信息,比如我想存储一张购物 ...

  9. 解决浏览器background-image属性不支持css3动画

    问题 最近在使用background-image属性来实现css3的逐帧动画时,碰到了个问题.在chrome浏览器上,background-image属性是支持css3动画的,但是到了firefox上 ...

  10. [改善Java代码]使用package-info类为包服务

    建议50: 使用package-info类为包服务 Java中有一个特殊的类:package-info类,它是专门为本包服务的,为什么说它特殊呢?主要体现在3个方面: (1)它不能随便被创建 在一般的 ...