Codewars编辑题--今天升到了7段
今天做的题目是:写一个函数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段的更多相关文章
- leetcode算法题(JavaScript实现)
题外话 刷了一段时间的codewars的JavaScript题目之后,它给我最大的感受就是,会帮助你迅速的提升你希望练习的语言的API的熟悉程度,Array对象.String对象等原生方法,构造函数. ...
- [python学习篇][python工具使用篇][1] 编辑,设置等
1 添加sublime到环境变量 win +r ,输入sysdm.cpl, 在弹出的界面选择高级,选择环境变量,编辑path,添加sublime的安装目录(这是sublime的一种安装方式,另外一种安 ...
- NOIP2016考前做题(口胡)记录
NOIP以前可能会持续更新 写在前面 NOIP好像马上就要到了,感觉在校内训练里面经常被虐有一种要滚粗的感觉(雾.不管是普及组还是提高组,我都参加了好几年了,结果一个省一都没有,今年如果还没有的话感觉 ...
- [BUUCTF-Pwn]刷题记录1
[BUUCTF-Pwn]刷题记录1 力争从今天(2021.3.23)开始每日至少一道吧--在这里记录一些栈相关的题目. 最近更新(2021.5.8) 如果我的解题步骤中有不正确的理解或不恰当的表述,希 ...
- SQL Server数据表设计编辑后无法保存处理办法
关于使用 SQL Server 企业管理器,表[设计]界面,修改数据表字段或类型无法保存的问题处理过程: 使用SQL Server数据库的你是否遇到过每次数据库编辑工具内点击设计修改表字段或类型要保存 ...
- 游记——noip2016
2016.11.18 (day 0) 呆在家. 悠闲地呆在家.. 明后天可能出现的错误: 1)没打freopen.打了ctime: 2)对拍程序忘记怎么写了...忘记随机化种子怎么写了: 3)不知道厕 ...
- JabRef 文献管理软件
JabRef 文献管理软件简明教程 大多只有使用LaTeX撰写科技论文的研究人员才能完全领略到JabRef的妙不可言,但随着对Word写作平台上BibTeX4Word插件的开发和便利应用,使用Word ...
- haar-like特征(转载)
浅析人脸检测之Haar分类器方法 [补充] 这是我时隔差不多两年后, 回来编辑这篇文章加的这段补充, 说实话看到这么多评论很是惊讶, 有很多评论不是我不想回复, 真的是时间久了, 很多细节我都忘记了 ...
- 2、转载一篇,浅析人脸检测之Haar分类器方法
转载地址http://www.cnblogs.com/ello/archive/2012/04/28/2475419.html 浅析人脸检测之Haar分类器方法 [补充] 这是我时隔差不多两年后, ...
随机推荐
- WCF与WebService之间的异同
下面我们来详细讨论一下二者的区别.Web Service和WCF的到底有什么区别. 1,Web Service:严格来说是行业标准,也就是Web Service 规范,也称作WS-*规范,既不是框架, ...
- cocos2d-x如何优化内存的应用
自身以前也写过cocos2d-x如何优化内存的应用,以及内存不够的情况下怎么样处置惩罚游戏.今天在微博中看到有友好简介了下内存,挺详细的.不晓得是谁写的,我纪录下. 一,IOS与图片内存 在IOS上, ...
- 理解WebKit和Chromium: 调试Android系统上的Chromium
转载请注明原文地址:http://blog.csdn.net/milado_nju 1. Android上的调试技术 在Android系统上,开发人员能够使用两种不同的语言来开发应用程序,一种是Jav ...
- session销毁
session.invalidate(),session.invalidate的销毁是把这个session所带的用户彻底的销毁,这个session跟用户已经紧密联合在一起,所以就一起销毁了,这样就算换 ...
- android138 360 小火箭
package com.itheima52.rocket; import android.app.Service; import android.content.Context; import and ...
- Linux下vim配置详解
转自http://www.cnblogs.com/witcxc/archive/2011/12/28/2304704.html
- C++之运算符重载(2)
上一节主要讲解了C++里运算符重载函数,在看了单目运算符(++)重载的示例后,也许有些朋友会问这样的问题.++自增运算符在C或C++中既可以放在操作数之前,也可以放在操作数之后,但是前置和后置的作用又 ...
- easyeclipse for php 如何默认显示行号
呃... 相当简单 window->preferences->PHPeclipse web development->php 然后找到appearance选项卡 在 show lin ...
- 使用ReactiveCocoa开发RSS阅读器
目前已经完成的功能有对RSS的解析和Atom解析,RSS内容本地数据库存储和读取,抓取中状态进度展示,标记阅读状态,标记全部已读等.这些功能里我对一些异步操作产生的数据采用了ReactiveCocoa ...
- BootStrap2学习日记11---单选框多选框
单选框代码: <label for="country">国家</label> <select id="country"> & ...