今天做的题目是:写一个函数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. 多线程/进度条应用(progressbar)

    使用Control Sets 下的 ProgressBar - Responsive Loop控件 ProcessBar 或者 CancelBar 都可以被设置为 invisible 代码如下(分享自 ...

  2. RFID与射频卡电器特性

    电气特性: 容量为8K位EEPrOM: ● 分为16个扇区,每个扇区为4块,每块16个字节,以块为存取单位: ● 每个扇区有独立的一组密码及访问控制: ● 每张卡有唯一序列号,为32位: ● 具有防冲 ...

  3. html 前台通用表单

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. 关于学习netty的两个完整服务器客户端范例

    https://github.com/wangyi793797714/IMServer https://github.com/wangyi793797714/IMClient https://gith ...

  5. mysql-----gtid_executed详解 原创

    MySQL 5.6版本开启GTID模式,必须打开参数log_slave_updates, 简单来说就是必须在从机上再记录一份二进制日志.这样的无论对性能还是存储的开销,无疑会相应的增大 而MySQL ...

  6. 高级进程间通信之基于STREAMS的管道

    基于STREAMS的管道(简称STREAMS管道,STREAMS pipe)是一个双向(全双工)管道.单个STREAMS管道就能向父.子进程提供双向的数据流. 将http://www.cnblogs. ...

  7. 用VB操作Excel的方法

    VB是常用的应用软件开发工具之一,由于VB的报表功能有限,而且一但报表格式发生变化,就得相应修改程序,给应用软件的维护工作带来极大的不便.因此有很多程序员现在已经充分利用EXECL的强大报表功来实现报 ...

  8. Sorting It All Out

    Description An ascending sorted sequence of distinct values is one in which some form of a less-than ...

  9. Python学习笔记 第二课 循环

    >>> movies=["The Holy Grail", 1975, "The Life of Brian", 1979, "Th ...

  10. lk启动流程详细分析

    转载请注明来源:cuixiaolei的技术博客 这篇文章是lk启动流程分析(以高通为例),将会详细介绍下面的内容: 1).正常开机引导流程 2).recovery引导流程 3).fastboot引导流 ...