2012-05-31 11 views
10

Parece un problema fácil, pero no puedo encontrar una solución. Quiero tomar primero, digamos 2 letras de cadena, y moverlas al final de esta cadena. Entonces, por ejemplo, OK12 se convertiría en 12OK.Mover n caracteres desde el frente de la cadena hasta el final

edición: Hasta ahora he intentado cortar la cadena, luego agregarlo al resto de la cadena, pero me listada hay una solución de una línea para que, al igual función predefinida o algo así.

+0

@JosephtheDreamer. Cuando un hombre dice que lo intentó, le creo. ¿Cuáles son los beneficios de incluir muchos intentos de falla? probablemente no conocía todas las funciones de cuerda. – gdoron

+0

@marue. ¿Con qué palabras clave? puedes mostrarme como? – gdoron

+0

He usado slice al principio, pero ignoré por completo el hecho de que podía hacerlo en una línea, pero no lo precisé demasiado en el tema, lo siento. – Malyo

Respuesta

13
"OK12".substr(2) + "OK12".substr(0,2) 

solución genérica:

var result = str.substr(num) + str.substr(0, num); 

Live DEMO

+0

Funciona como un encanto, gracias. – Malyo

+0

+1 para genérico. Sin embargo, el método de expresiones regulares parece ser más ordenado pero más lento ... ¡pero más claro! :) – VisioN

+0

@VisioN. ¿De verdad crees que Regex es la mejor manera aquí? ¿Dirías lo mismo por unir el cuarto char? '/. {3} (.) /' En lugar de 'str [3]'? Regex no siempre es la mejor solución, y muchas veces no lo es. – gdoron

6

varias técnicas:

str.slice(2) + str.slice(0,2); 

str = str.replace(/^(.{2})(.+)/, '$2$1'); 

for (var a=str.split(""),i=2;i--;) a.push(a.shift()); 
str = a.join(''); 
+0

Me gustó la forma 'regex', pero esas técnicas son exageradas aquí. Por cierto, ¿por qué usaste '. +' Y no '. *'? – gdoron

+0

@gdoron ¡Claramente! :) Pero están incluidos por diversión. – Phrogz

+0

@gdoron No hay una buena razón para '. +' Contra '. *'; Supongo que asumo que si estás interesado en mover letras, esperas un resultado que no sea de identidad;) – Phrogz

1
text.slice(2) + text.slice(0, 2); 
1
var a='ok12'; 
a=a.substr(2,a.length-2)+a.substr(0,2); 
Cuestiones relacionadas