You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中反转字符串字母并保留非字母位置?

JavaScript实现字符串重排方案

可以通过以下两步完成需求:

  1. 提取并反转字母序列:从原字符串中筛选出所有字母字符,将这个字母数组反转,得到逆序的字母列表。
  2. 重构目标字符串:遍历原字符串的每个字符,遇到非字母字符直接保留;遇到字母字符时,从反转后的字母列表中依次取出元素填充。

代码实现

function reverseLettersKeepSymbols(str) {
  // 提取所有字母并反转,无字母时返回空数组
  const reversedLetters = str.match(/[a-zA-Z]/g)?.reverse() || [];
  // 遍历原字符串,逐个处理字符
  return str.split('').map(char => {
    // 是字母则取反转后的第一个元素,否则保留原字符
    return /[a-zA-Z]/.test(char) ? reversedLetters.shift() : char;
  }).join('');
}

// 测试示例
const input = "t-hE-rEd=fiSh!!";
const output = reverseLettersKeepSymbols(input);
console.log(output); // 输出: "h-Si-fdE=rEht!!"

代码说明

  • str.match(/[a-zA-Z]/g):用正则匹配所有大小写字母,返回字母数组;若字符串无字母,?. 运算符避免报错,返回空数组。
  • reverse():将字母数组逆序,得到需要填充的字母顺序。
  • split(''):把原字符串拆分为单个字符的数组,方便遍历处理。
  • map():遍历每个字符,判断是否为字母:是则从reversedLetters头部取出元素(shift()),否则保留原字符。
  • join(''):将处理后的字符数组拼接成最终字符串。

内容的提问来源于stack exchange,提问作者Santhosh Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 05:15:20