如何用原生JavaScript实现字符串单词首尾对应互换?
如何用原生JavaScript实现字符串单词的首尾对应交换?
嘿,这个需求本质就是反转字符串中的单词顺序对吧?咱直接用原生JS就能轻松搞定,还能处理各种边界情况,我给你一步步拆解:
核心实现代码
先上能用的代码,测试你给的示例完全没问题:
function reverseWordOrder(str) { // 1. 先去掉首尾空格,避免空元素干扰 const trimmedStr = str.trim(); // 2. 用正则分割成单词数组:匹配1个或多个空格,处理连续空格的情况 const words = trimmedStr.split(/\s+/); // 3. 反转数组,直接实现首尾单词互换的效果 words.reverse(); // 4. 用单个空格拼接回字符串 return words.join(' '); } // 测试你给的示例 const input = "Secret Life is Beautiful Key"; console.log(reverseWordOrder(input)); // 输出:"Key Beautiful is Life Secret"
代码逐行解释
咱来唠唠每一步为啥这么写:
str.trim():先把字符串首尾的空格干掉,不然如果输入首尾有空格,分割后会出现空字符串元素,影响反转结果split(/\s+/):这里不用split(' ')是因为如果输入有连续多个空格,split(' ')会生成空元素,用正则\s+匹配任意数量的空白字符(空格、制表符等),能准确分割出所有单词words.reverse():数组的reverse()方法会直接反转数组元素的顺序,正好完美对应你要的"第一个和最后一个互换,第二个和倒数第二个互换"的需求join(' '):用单个空格把反转后的数组拼接成字符串,保证输出的格式整洁
边界情况测试
咱得考虑各种极端输入,保证代码鲁棒性:
- 输入空字符串:
reverseWordOrder("")→ 输出"" - 输入单个单词:
reverseWordOrder("Hello")→ 输出"Hello" - 输入多个连续空格:
reverseWordOrder(" Hi There ")→ 输出"There Hi" - 输入纯空格:
reverseWordOrder(" ")→ 输出""
扩展小提示(可选)
如果你的需求需要保留原始字符串中的空格格式(比如连续空格、制表符等),那上面的方法就不适用了,这时候得用更复杂的正则匹配来提取单词和空白字符,再重新组合。不过看你给的示例,应该不需要这个,所以就不多啰嗦啦。
内容的提问来源于stack exchange,提问作者Techie
相关产品推荐
相关产品推荐

