2011-03-28 151 views
1

我想反转一个字符串,然后我想反转它中的每个单词。我能够扭转字符串。但不能扭转它的话。反转字符串

鉴于海峡= “你怎么样” 预期结果= “你是如何”

我的代码 var my_str="how are you"; alert(my_str.split('').reverse().join(''));

结果我得到:uoy era woh

如何得到最终的结果?

回答

11

其他的答案是完全正确的如果你的字符串在单词之间只有1个空格。

,如果你有话之间的多个空格,那么事情就有点不一样: 得到公正的话,按相反的顺序,以1个空间答道:

str.split(/\s+/).reverse().join(" ") 

扭转整个字符串,而且还有原始空白:

str.split(/\b/).reverse().join('') 

的第一个使用一个正则表达式“/ \ S + /”,以匹配而不是一个单一的空间的空间的整个运行。它重新加入单个空间的话。

第二个使用正则表达式“/ \ b /”,来分割单词和非单词之间的边界。由于空间的运行将被保留,它只是以空字符串重新加入。

+0

这是最有生产价值的解决方案。 +1 – karim79 2011-03-29 00:02:04

+0

+1为“保留原始空白”版本 – 2013-06-23 17:19:03

2

问题是你正在拆分空字符而不是空格字符。试试这个:

var str = "how are you"; 
alert(str.split(" ").reverse().join(" ")); 

Try it here.

8

我认为你在那里有一个空字符串:my_str.split('')

确保你把一个空间:my_str.split(' ')