JavaScript 转化字符串中的每个小写字母

要求简述:将一串字符串的每个小写字母转化为它的下个字母(a->b),如果遇到空格,则转化为下一个字母的大写形式。

原题Using the JavaScript language, have the function LetterChanges(str) take the str parameter being passed and modify it using the following algorithm. Replace every letter in the string with the letter following it in the alphabet (ie. c becomes d, z becomes a). Then capitalize every vowel in this new string (a, e, i, o, u) and finally return this modified string. 

Sample Test Cases

Input:"hello*3"

Output:"Ifmmp*3"


Input:"fun times!"

Output:"gvO Ujnft!"

我的基本思路:①、用str.split()方法以空格分割字符串为数组。(此方法相当于PHP中的explode())

    ②、循环遍历数组。

    ③、循环遍历数组每个位置。

         ④、如果数组长度只有1,则逐一正常转换为下一个字母。

         ⑤、数组长度大于一时,将[0]位置处的前几个字母正常转化,其最后一个字母转化加大写。[length-1]处的第一个字母转化加大写,             其余正常转化。数组中间的位置的字符串,首字母和末字母转化加大写,其余正常转化。

源代码

<script>
function LetterChanges(str) { 
  // code goes here  
	var a='abcdefghijklmnopqrstuvwxyz';
  var arr=new Array();
  arr=str.split(' ');
  var str2='';
  for(var i=0;i<arr.length;i++){
  	if(arr.length>1){//单词数大于1时
	  	if(i==0){//第一个单词
	  		for(var j=0;j<arr[i].length;j++){
	  			if(a.indexOf(arr[i][j])!=-1){//字符为小写字母时
	  				if(j!=arr[i].length-1){
	  					str2 +=a[a.indexOf(arr[i][j])+1];
	  				}else{
	  					str2 +=a[a.indexOf(arr[i][j])+1].toUpperCase()+' ';
	  				} 					
	  			}else{//字符为其它时
	  				str2 +=arr[i][j];
	  			}
	  		}
	  		str2+=' ';
	  	}else if(i==arr.length-1){//最后一个单词时
	  		for(var j=0;j<arr[i].length;j++){
	  			if(a.indexOf(arr[i][j])!=-1){//字符为小写字母时
		  			if(j==0){
		  				str2 +=' '+a[a.indexOf(arr[i][j])+1].toUpperCase();
		  			}else{
		  				str2 +=a[a.indexOf(arr[i][j])+1];
		  			}
		  		}else{//字符为其它时
	  				str2 +=arr[i][j];
	  			}
	  		}
	  	}else{//中间单词
  			for(var j=0;j<arr[i].length;j++){
	  			if(a.indexOf(arr[i][j])!=-1){//字符为小写字母时
	  				if(j==0){
		  				str2 +=a[a.indexOf(arr[i][j])+1].toUpperCase()+' ';
		  			}else if(j==arr[i].length-1){
		  				str2 +=' '+a[a.indexOf(arr[i][j])+1].toUpperCase();
		  			}else{
	  					str2 +=a[a.indexOf(arr[i][j])+1];
		  			}
	  			}else{
	  				str2 +=arr[i][j];
	  			}
  			}
	  		str2+=' ';
	  	}
  	}else{
	  	for(var j=0;j<arr[i].length;j++){
	  		if(a.indexOf(arr[i][j])!=-1){//字符为小写字母时
  				str2 +=a[a.indexOf(arr[i][j])+1];
  			}else{//字符为其它时
  				str2 +=arr[i][j];
  			}
  		}
  	}
  }
  str=str2;
  return str;       
}
   
// keep this function call here 
var str="abcdef1 sdsd";
console.log(LetterChanges(str));   
</script>
输出结果:

bcdefg1 Tete

总结:设计好思路之后,用了大量的if控制语句,逐一对各中情况进行处理。

我的收获:现在对数据流程的处理还是比较熟悉了,这要感谢写过的两个js小游戏,它们让我在这方面进行了大量的练习。知识点收获:js获取数组长度也用arr.length,同字符串长度。字母大写str.toUpperCase()的熟练度+1.

猜你喜欢

转载自blog.csdn.net/qq_23669731/article/details/78739054
今日推荐