2012-05-31 42 views
10

这似乎是一个简单的问题,但我不能找到解决办法。我想先拿起来,让我们说从字符串中的2个字母,并将它们移动到这个字符串的末尾。例如,OK12会变成12OK。从字符串前移至n个字符到最后

编辑:到目前为止,我已经试过切割弦断,然后将它添加到字符串的休息,但我因子评分有针对单行的解决方案,如预定义的功能什么的。

+0

@JosephtheDreamer。当一个人说他尝试了,我相信他。包含大量失败尝试的好处是什么?他可能不知道所有的字符串函数。 – gdoron

+0

@marue。使用哪些关键字?你能告诉我怎么样? – gdoron

+0

我刚开始使用切片,但完全忽略了这样一个事实,即我可以在一行中做到这一点,没有确切地说,在主题寿,很抱歉。 – Malyo

回答

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

通用的解决方案:

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

Live DEMO

+0

工程就像一个魅力,谢谢。 – Malyo

+0

+1为通用。然而,正则表达式似乎更整齐但速度更慢......但更整洁! :) – VisioN

+0

@VisioN。你真的认为正则表达式是最好的方法吗?你会说匹配第四个字符相同吗? '/。{3}(。)/'而不是'str [3]'?正则表达式并不总是最好的解决方案,很多时候它不是。 – gdoron

6

的各种技术:

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

我喜欢'正则表达式'的方式,但是这些技巧在这里是过度的。顺便说一句,你为什么使用'。+'而不是'。*'? – gdoron

+0

@gdoron显然! :)但他们被包括在内的乐趣。 – Phrogz

+0

@gdoron'。+'vs.'。*';没有理由。我想,我认为,如果你有兴趣在走动的信件,你还指望无标识的结果;) – Phrogz

1
text.slice(2) + text.slice(0, 2); 
1
var a='ok12'; 
a=a.substr(2,a.length-2)+a.substr(0,2); 
相关问题