string.split()后切换/大小写无响应

时间:2016-06-07 06:03:45

标签: javascript switch-statement

我正在尝试解决一个问题,即函数接受一个字符串,总是小写,然后取第一个字母并将其添加到字符串的后面。

它似乎没有用。

var fir;

function convert(str) {
    str = str.split("");
    fir = str[0];
    str = str.join("");

switch (fir) {
  case /[bcdfghjklmnpqrstvwxyz]/.test(fir):
    var ind = str.substr(1);
    str = ind + str[0];

    break;


}
return str;
}

如果我从我的javascript的另一部分调用convert("pig");,那么它应该返回“igp”

3 个答案:

答案 0 :(得分:0)

我认为这就是您所需要的所有内容 - “函数接受一个字符串,总是小写,然后取第一个字母并将其添加到字符串的后面”。

function convert(str) {
    str = str.substr(1) + str[0];
        return str;
}
convert("pig");

如果你坚持使用你拥有的东西,我已经在这里修好了。

var fir;

function convert(str) {
    str = str.split("");
    fir = str[0];
    str = str.join("");

switch (true) {
  case /[bcdfghjklmnpqrstvwxyz]/.test(fir):
    var ind = str.substr(1);
    str = ind + str[0];

    break;


}
return str;
}

convert("pig");

我所做的唯一更改是将switch(fir)更改为switch(true),这就是您的切换案例无效的原因。

答案 1 :(得分:0)

我认为您应该阅读有关Javascript字符串参考的信息。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String

记住:

  

另一种方式(在ECMAScript 5中引入)是将字符串视为类似数组的对象,其中单个字符对应于数字索引:

现在,在阅读了JS String Reference之后。我们可以做一些更聪明的事情来连接切片的字符串数组,而没有0索引字母和字符串数组的最后一个字母。

这样你可以做一些没有正则表达式,切换和其他东西的东西。

请记住要始终阅读有关全局对象的参考资料,它可以轻松地为您节省大量工作并更好地理解JS语言

示例代码:

function convert(string){
    return string.slice(1) + string[0];
}

答案 2 :(得分:0)

您的switch语句不正确。您的案例表达式case /[bcdfghjklmnpqrstvwxyz]/.test(fir)计算为布尔值,而在切换表达式中,您传递fir变量中的字符(如str[0] = 'p'),这是不匹配的。所以你的case语句永远不会被执行,它会在没有做任何事情的情况下从switch块中出来。将其更改为switch(true),您应该感觉良好。