今天做的题目是:写一个函数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 #327 (Div. 2) A. Wizards' Duel 水题

    A. Wizards' Duel Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/591/prob ...

  2. URAL 1776 C - Anniversary Firework DP

    C - Anniversary FireworkTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/c ...

  3. vector<int> v2 = 42; 为何非法

    C++ Primer 第四版,第十三章“复制控制” 习题13.2,为何vector<int> v2 = 42; 不能编译? 百度贴吧里的一位楼主给出了答案,本人认为正确,特此引用: 参考链 ...

  4. uri中为什么本地文件file后面跟三个斜杠, http等协议跟两个斜杠?

    那就要从URI[1]的结构来看了 scheme:[//[user:password@]host[:port]][/]path[?query][#fragment] 可以看到,如果有host的时候,前面 ...

  5. C++ 排序函数 sort(),qsort()的使用方法

    想起来自己天天排序排序,冒泡啊,二分查找啊,结果在STL中就自带了排序函数sort,qsort,总算把自己解脱了~ 所以自己总结了一下,首先看sort函数见下表: 函数名 功能描写叙述 sort 对给 ...

  6. 解决Mac下SublimeLinter的Unsafe Characters警告

    Mac下编辑JS文件, 如果是中文字符的行会警告: This character may get silently deleted by one or more browsers. SublimeLi ...

  7. .Net中JS调用后台的方法

    前台方法: <script type="text/jscript"> var k = "test"; var s = '<%=ShowMsg( ...

  8. 进程间通信之POSIX信号量

    POSIX信号量接口,意在解决XSI信号量接口的几个不足之处: POSIX信号量接口相比于XSI信号量接口,允许更高性能的实现. POSIX信号量接口简单易用:没有信号量集,其中一些接口模仿了我们熟悉 ...

  9. DebugView图文教程

    Debug信息捕获软件. 可以很方便的捕获系统实时输出的Debug信息,并保存为日志文件.可以远程捕获服务器上的Debug信息. 比较方便开发人员在系统发布前监控一些系统流程和异常,甚至在系统不大的情 ...

  10. 小白日记19:kali渗透测试之选择和修改EXP

    EXP 目的:学会选择和修改网上公开的漏洞利用代码[EXP(python\perl\ruby\c\c++....)] 方法: 1.Exploit-db[kali官方维护的漏洞利用代码库] 2.Secu ...