2012-05-31 14 views
10

Sembra un problema facile, ma non riesco a trovare una soluzione. Voglio prendere prima, diciamo 2 lettere da una stringa, e spostarle alla fine di questa stringa. Ad esempio, OK12 diventerebbe 12OK.Sposta n caratteri dalla parte anteriore della stringa alla fine

modifica: Finora ho provato a tagliare la stringa, quindi ad aggiungerla al resto della stringa, ma ho pensato che esistesse una soluzione a una riga, come una funzione predefinita o qualcosa del genere.

+0

@JosephtheDreamer. Quando un ragazzo dice di averlo provato, io gli credo. Qual è il vantaggio di includere molti tentativi di errore? probabilmente non conosceva tutte le funzioni di stringa. – gdoron

+0

@marue. Con quali parole chiave? puoi mostrarmi come? – gdoron

+0

All'inizio ho usato slice ma ho completamente ignorato il fatto che potevo farlo in una riga, non ho precisato bene nell'argomento, mi dispiace. – Malyo

risposta

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

soluzione generica:

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

Live DEMO

+0

Funziona come un incantesimo, grazie. – Malyo

+0

+1 per generico. Tuttavia, il metodo regex sembra essere più accurato ma più lento però ... ma più pulito! :) – VisioN

+0

@VisioN. Pensi davvero che la regex sia il modo migliore qui? diresti lo stesso per l'abbinamento del quarto carattere? '/. {3} (.) /' Invece di 'str [3]'? regex non è sempre la soluzione migliore, e molte volte non lo è. – gdoron

6

Varie tecniche:

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

Mi è piaciuto il modo 'regex', ma quelle tecniche sono eccessive qui. A proposito, perché hai usato '. +' E non '. *'? – gdoron

+0

@gdoron Chiaramente! :) Ma sono inclusi per divertimento. – Phrogz

+0

@gdoron Nessuna buona ragione per '. +' Vs. '. *'; Suppongo che supponiamo che se sei interessato a spostare le lettere in giro, ti aspetti un risultato non identitario;) – Phrogz

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