让JS识别空格.split()

时间:2014-01-19 03:44:25

标签: javascript split

我写了这个函数来记录给定字符串中的一个新字符串,其中字母应该是字母表中的下一个字母,所有元音都是大写的。

现在我遇到了无法按照我想要的方式拆分字符串的问题。现在,当我真的希望在白色空间上分割字符串时,单词将被分成数组中的单独字符。有人可以解释为什么会这样吗?

当我在分割方法中的“”之间放置一个空格时,我只得到所有字符,并且“未定义”应该是白色空格。谢谢你的帮助!

function replace(str) {
  var newStr = [];
  var vowels = 'aeiou';
  var alpha = [  'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'
             ];
  str = str.split("");
  newStr.length = str.length;
  for(var i = 0; i < alpha.length; i++) {
    for(var j = 0; j < str.length; j++) {
      if(alpha[i] === str[j]) {
         newStr[j] = (alpha[i + 1]);
      }
    }
  }
  for(var k = 0; k < vowels.length; k++) {
    for(var x =0; x < newStr.length; x++){
      if(vowels[k] === newStr[x]) {
        newStr[x] = vowels[k].toUpperCase("");
    }
  }
}
  return newStr;
}

console.log(replace("today is great"));

2 个答案:

答案 0 :(得分:0)

要在空格上拆分字符串,请尝试:

str = str.split(/\s+/);

答案 1 :(得分:0)

str = str.split(" ");

这会将你的字符串分成[“今天”,“是”,“很棒”]。

当你到达

if(alpha[i] === str[j]) {

你永远不会进入if块,因为你正在比较“a”到“今天”或“a”到“是”等等。我认为你需要更多地打破你的字符串来完成这个。

我提出的建议如下:

function replace(str) {
    var alpha = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'],
        vowels = 'aeiou',
        newStr = [],
        i, j, k;

    // split everything into words
    str = str.split(' ');

    for (i = 0; i < str.length; i++) {

        // split everything into letters
        str[i] = str[i].split('');

        // make sure newStr has a similarly construction to str
        newStr[i] = [];

        for (j = 0; j < str[i].length; j++) {
            for (k = 0; k < alpha.length; k++) {
                if (alpha[k] === str[i][j]) {

                    // subsitute each letter
                    newStr[i][j] = alpha[k + 1];
                }
            }
        }
    }

    for (i = 0; i < newStr.length; i++) {

        // join newStr up to be an array of words instead of an array of an array of letters
        newStr[i] = newStr[i].join('');

        for (k = 0; k < vowels.length; k++) {

            // replace each vowel with the uppercase version
            newStr[i] = newStr[i].replace(vowels[k], vowels[k].toUpperCase());
        }
    }

    return newStr;
}

如果你真的想看“UpEbz jt hsfbU”而不是[“UpEbz”,“jt”,“hsfbU”],只需更改return newStr返回newStr.join('');