2016-06-07 11 views
1

Ich versuche, ein Problem zu lösen, wo die Funktion eine Zeichenfolge akzeptiert, immer in Kleinbuchstaben, und nimmt dann den ersten Buchstaben und fügt es an der Rückseite der Zeichenfolge.Switch/Fall reagiert nicht nach string.split()

Es scheint nicht zu funktionieren.

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; 
} 

Wenn ich convert("pig"); aus einem anderen Teil meines Javascript rufen dann sollte es zurückgeben „IGP“

+0

Es sollte "igp" zurückgeben; – divpinto18

+0

Was ist die Ausgabe, die Sie bekommen? – Arpan

+0

Was ist das Verhalten, das Sie tatsächlich implementieren möchten? Was ist der Zweck der Case-Anweisung und der Regex? – pvg

Antwort

0

Ich denke, das ist alles was Sie brauchen, das tut, was Sie gefragt - "-Funktion eine Zeichenfolge annimmt, immer in Kleinbuchstaben, und nimmt dann den ersten Buchstaben und fügt es an der Rückseite der Zeichenfolge ".

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

Wenn Sie beharrlich auf die Zubereitung mit, was du hast, ich habe es hier behoben haben.

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"); 

Die einzige Änderung, die ich getan habe ist switch(fir) zu switch(true) ändert, die, warum Ihr Schaltergehäuse ist nicht funktioniert wurde.

+0

Danke ... aber keine Ahnung, warum mein Code "Schwein" und nicht "igp" '?? – divpinto18

+0

Weil Sie 'switch (fir)' verwenden, wenn Sie 'switch (true)' verwenden sollten, da der 'case' eine Bedingung ist, die zu' true' oder 'false' führt. Ich habe Ihren Code auch in meinem Post aktualisiert. Bitte akzeptieren Sie, wenn Sie es für zufriedenstellend halten. – phreakv6

+0

Ja !! Oh vielen Dank ... es hat gut geklappt: D – divpinto18

0

Ich denke, dass Sie über die Javascript String Reference lesen sollten.

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

Merke:

Der andere Weg (eingeführt in ECMAScript 5) ist, um die Zeichenfolge als ein Array-ähnliches Objekt zu behandeln, wobei einzelne Zeichen auf einen numerischen Index entsprechen:

Nun, nach dem Lesen der JS String Reference. Wir können etwas noch intelligenteres tun, indem wir das zerschnittene String-Array ohne den Index-Index mit dem letzten Buchstaben des String-Arrays verketten.

So könnten Sie etwas ohne reguläre Ausdrücke, Schalter und andere Sachen tun.

Denken Sie daran, immer die Hinweise über die globalen Objekte zu lesen, es könnte Dir einfach spart eine Menge Arbeit und bekommt eine besseres Verständnis der JS Sprache

Beispielcode:

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

Ihre switch-Anweisung ist falsch. Ihr Case-Ausdruck case /[bcdfghjklmnpqrstvwxyz]/.test(fir) wertet einen booleschen Wert aus, während Sie im Schalterausdruck ein Zeichen in fir Variable (wie str[0] = 'p') übergeben, was eine Nichtübereinstimmung ist. So wird Ihre case-Anweisung niemals ausgeführt und sie kommt aus dem Block, ohne etwas zu tun. Ändern Sie es in switch(true) und Sie sollten gut sein.