簡體   English   中英

字符串-元音為大寫字母,字母為下一個字母-Javascript

[英]String - Vowels to uppercase, letters to next in alphabet - Javascript

我正在嘗試將字符串的所有字母轉換為字母的下一個字母,例如A應該變成BX應該變成YZ應該變成A等。

字母移動完成后,我想將每個元音都大寫。

function LetterChanges(str) {

   var c = str.split("");
    var vowels = ["a", "e", "i", "o", "u"]; 
   if (c == vowels) {
      vowels.toUpperCase();}
   if (c == "z") return "a";  
    return str.replace(/[a-z]/gi, function(s) {
      return String.fromCharCode(s.charCodeAt(c)+1);
      });

}
LetterChanges("cold buttz"); 

元音部分和za部分是行不通的。 請幫忙?

看看是否有幫助:

var str = 'cold buttz';

str = str.replace(/[a-z]/gi, function(char) {
  char = String.fromCharCode(char.charCodeAt(0)+1);
  if (char=='{' || char=='[') char = 'a';
  if (/[aeiuo]/.test(char)) char = char.toUpperCase();
  return char;
});

console.log(str); //= "dpmE cvUUA"

編輯:我可以看到您的代碼有點像是我上次回答中的混亂復制/粘貼...這是它有什么問題的簡短描述:

function LetterChanges(str) {

  var c = str.split(""); // array of letters from `str`
  var vowels = ["a", "e", "i", "o", "u"]; // array of vowels

  // `c` and `vowels` are two different objects
  // so this test will always be false
  if (c == vowels) {
    // `toUpperCase` is a method on strings, not arrays
    vowels.toUpperCase();
  }

  // You're comparing apples to oranges,
  // or an array to a string, this test will also be false
  // Then you return 'a'?? This was meant to be inside the `replace`
  if (c == "z") return "a";

  // OK, I see you recycled this from my other answer
  // but you copy/pasted wrong... Here you're basically saying:
  // "For each letter in the string do something and return something new"
  return str.replace(/[a-z]/gi, function(s) { // `s` is the letter
    // Here we find out the next letter but
    // `c` is an array and `charCodeAt` expects an index (number)
    return String.fromCharCode(s.charCodeAt(c)+1);

    // `.charCodeAt(0)` gives you the code for the first letter in a string
    // in this case there's only one.
  });
}

我的解決方案完全可以滿足您的要求。 字母首先在字母表中移位,然后元音被大寫。

看一看:

 function LetterChanges(str) { var alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; var ret = new Array(); for (var x=0; x < str.length; x++) { for(var i=0; i < alphabet.length; i++) { if (checkIfCharInString(alphabet, str[x]) == false) { ret[x] = str[x].toString(); break; } if (str[x] == alphabet[i]) { if (alphabet[i] == "Z") { ret[x] = "A"; } else { ret[x] = alphabet[i+1]; } } } } var output = ret.join(""); output = capitalizeVowels(output); // code goes here return output; } function checkIfCharInString(motherString, char) { for(var i=0; i < motherString.length; i++) { if (motherString[i] == char.toString()) { return true; } } return false; } function capitalizeVowels(str) { var vowel = "aeiou"; var newStr = new Array(); for(var i=0; i < str.length; i++) { for(var x=0; x < vowel.length; x++) { newStr[i] = str[i]; if (str[i] == vowel[x]) { newStr[i] = vowel[x].toUpperCase(); break; } } } return newStr.join(""); } console.log(LetterChanges("Hello*3")); console.log(LetterChanges("I love stackoverflow!")); console.log(LetterChanges("I have Internet explorer!!")); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM