2012-05-31 11 views
10

Kolay bir sorun gibi görünüyor, ancak çözüm bulamıyorum. İlk önce, dize 2 harf diyelim ve onları bu dizenin sonuna taşıyalım. Yani örneğin, OK12 12OK olur.N karakterleri dizgenin ön tarafından sonuna kadar taşıyabilirsiniz

düzenleme: Şimdiye kadar ipi kesmeyi denedim, sonra dizenin geri kalanına ekledim, ancak bunun için önceden tanımlanmış işlev veya benzeri bir tek satırlık çözüm olduğunu anladım.

+0

@JosephtheDreamer. Denediği bir adam söylediği zaman ona inanıyorum. Birçok başarısızlık girişiminin dahil edilmesinin faydaları nelerdir? muhtemelen tüm dizi işlevlerini bilmiyordu. – gdoron

+0

@marue. Hangi anahtar kelimelerle? bana nasıl olduğunu gösterebilir misin? – gdoron

+0

İlk başta dilim kullandım ama bir satırda yapabildiğim gerçeğini tamamen göz ardı ettim. – Malyo

cevap

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

Genel çözeltisi:

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

Live DEMO

+0

Bir çekicilik gibi çalışır, teşekkürler. Jenerik için – Malyo

+0

+1. Ancak, regex yöntemi daha düzgün ama daha yavaş gibi görünüyor ... ama daha düzgün! :) – VisioN

+0

@VisioN. Gerçekten regex'in buradaki en iyi yol olduğunu mu düşünüyorsun? dördüncü karakteri eşleştirmek için aynı şeyi söyler misiniz? '/. {3} (.) /' Yerine str [3] '? regex her zaman en iyi çözüm değildir ve çoğu zaman değildir. – gdoron

6

çeşitli teknikler:

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

'Regex' yöntemini beğendim, ancak bu teknikler burada çok fazla. Bu arada, neden kullanmadın?. + 'Ve değil. – gdoron

+0

@gdoron Açıkça! :) Ama eğlenmek için dahil ediliyorlar. – Phrogz

+0

@gdoron '. +' Vs. '* için iyi bir neden yok. Sanırım harfleri hareket ettirmek istiyorsan, kimliksiz bir sonuç bekliyorsun.) – Phrogz

1
text.slice(2) + text.slice(0, 2); 
1
var a='ok12'; 
a=a.substr(2,a.length-2)+a.substr(0,2); 
İlgili konular