CoderByte Letter更改Java脚本

时间:2016-02-17 00:00:01

标签: javascript

问题是:

使用JavaScript,让函数LetterChanges(str)获取传递的str参数,并使用以下算法对其进行修改。将字符串中的每个字母替换为字母表后面的字母(即c变为d,z变为a)。然后大写这个新字符串(a,e,i,o,u)中的每个元音,最后返回这个修改后的字符串。

function LetterChanges(str){ 
  var result = "";
  for(var i = 0; i < str.length; i++) {
    var letters = str[i];
    if (letters == "a"|| letters == "e"|| letters == "i"|| letters == "o"|| letters =="u") {
      letters = letters.toUpperCase();
      result+=letters;
    } else if (letters == "z") {
      letters = "a";
    } else {
      var answer = "";
      var realanswer="";
      for (var i =0;i<str.length;i++) {
        answer += (String.fromCharCode(str.charCodeAt(i)+1));
      }              
      realanswer += answer
    }
  }
  return realanswer;
  return result;
}
LetterChanges();

基本上,如果在返回结果之前放置realanswer并且使用“o”调用LetterChanges,则输出未定义。但如果用非元音如“b”调用它,它将输出“c”,这是正确的。

现在,如果我在返回realanswer之前放置返回结果,它将适用于元音但不适用于其他字母。谢谢你的帮助

4 个答案:

答案 0 :(得分:1)

 DataReadRequest readRequest = new DataReadRequest.Builder()
                .read(DataType.TYPE_HEART_RATE_BPM)
                .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
                .bucketByTime(365, TimeUnit.DAYS)
                .build();


        Fitness.getHistoryClient(this, GoogleSignIn.getLastSignedInAccount(this))
                .readData(readRequest)
                .addOnSuccessListener(new OnSuccessListener<DataReadResponse>() {
                    @Override
                    public void onSuccess(DataReadResponse dataReadResponse) {
                        Log.d(TAG, "onSuccess()");

                        for (Bucket bucket : dataReadResponse.getBuckets()) {
                            Log.e("History", "Data returned for Data type: " + bucket.getDataSets());

                            List<DataSet> dataSets = bucket.getDataSets();
                            for (DataSet dataSet : dataSets) {
                                showDataSet(dataSet);
                            }
                        }
                    }
                })
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception e) {
                        Log.e(TAG, "onFailure()", e);
                    }
                })
                .addOnCompleteListener(new OnCompleteListener<DataReadResponse>() {
                    @Override
                    public void onComplete(@NonNull Task<DataReadResponse> task) {
                        Log.d(TAG, "onComplete()");
                    }
                }); 
  1. 第一部分以1为增量修改辅音。

    • 正则表达式使用 function LetterChanges(str) { return str .replace(/[a-zA-Z]/g, (x) => String.fromCharCode(x.charCodeAt(0)+1)) .replace(/[aeiou]/g, (v) => v.toUpperCase()); } 分隔字符,而根本没有括号。 []确保将正则表达式应用在字符串中的任何位置,而不是不放置g来使搜索第一次出现。

    • 您必须将字符串中的字符转换为Unicode,因为递增是一项数学运算。 g在参数中字符串的索引0处说。 1的增量不在括号内,而是在括号外。

  2. 第二部分将元音修改为大写。

    • 这非常简单,正则表达式仅查找单个字符,因为使用了x.charCodeAt(0),而在字符串中的任何地方都使用了[]。修饰符是使字符变为大写。

答案 1 :(得分:0)

 function LetterChanges(str) {
  var lstr = "";// Took a variable to store  after changing alphabet//

  for(var i=0;i<str.length;i++){
   var asVal = (str.charCodeAt(i)+1);// To convert string to Ascii value and 1 to it//
    lstr += (String.fromCharCode(asVal));// To convert back to string from Asii value//
  }
  console.log("Before converting vowels :"+lstr); //Printing in console changed alphabet//
  var neword =""; // variable to store word after changing vowels to uppercase// 
  for(i=0;i<lstr.length;i++){
    var strng = lstr[i]; // Storing every letter in strng variable while running loop //
    if(strng=="a"||strng=="e"||strng=="i"||strng=="o"||strng=="u"){
        neword += strng.toUpperCase(); // If it a vowel it gets uppercased and added //
       }
    else{
        neword += strng; // If not vowel , it just gets added without Uppercase //
    }

  }
  console.log("After converting vowels :"+neword); //Printing in console the word after captilising the vowels //
}

LetterChanges("Goutham"); // Calling a function with string Goutham //

答案 2 :(得分:0)

function letterChanges(str) {
  let res = '';
  let arr = str.toLowerCase().split('');

  // Iterate through loop
  for(let i = 0; i < str.length; i++) {
    // Convert String into ASCII value and add 1
    let temp = str.charCodeAt(i) + 1;
    // Convert ASCII value back into String to the result
    res += (String.fromCharCode(temp));
  }
  console.log(res);
  // Replace only vowel characters to Uppercase using callback in the replace function
  return res.replace(/[aeiou]/g, (letters) {
      return letters.toUpperCase();
  });
}

答案 3 :(得分:0)

function LetterChanges(str) { 

  return str
    .split('')
    .map((c) => String.fromCharCode((c >= 'a' && c <= 'z') ? (c.charCodeAt(0)-97+1)%26+97 : (c >= 'A' && c <= 'Z') ? (c.charCodeAt(0)+1-65)%26+65 : c.charCodeAt(0)))
    .join('').replace(/[aeiou]/g, (letters) => letters.toUpperCase());

}