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

如何在字符串相邻不同字符间插入指定符号?

嘿,这个需求挺简单的,我给你几个实用的实现方案,涵盖不同编程语言和思路,你按需选用:

Python 实现

用Python的话,我们可以用列表来高效拼接结果(毕竟字符串是不可变的,列表拼接更省性能),逻辑非常直观:

s = "aabbc"
if not s:  # 处理空字符串的边界情况
    print("")
else:
    result = [s[0]]  # 先把第一个字符放进结果列表
    for char in s[1:]:
        # 对比当前字符和结果里最后一个有效字符(排除刚插入的$)
        if char != result[-1][-1]:
            result.append("$")
        result.append(char)
    final_str = ''.join(result)
    print(final_str)  # 输出: aa$bb$c

简单说下逻辑:先初始化结果列表,把第一个字符放进去。然后从第二个字符开始遍历,每次和结果列表最后一个元素的最后一个字符对比(因为可能刚插入了$,所以要取真正的前一个原字符),如果不一样就先加$,再加当前字符,最后把列表拼成字符串就行。

JavaScript 实现

如果是前端或Node.js场景,JavaScript有两种常用方式:

遍历拼接法

和Python思路一致,用数组来构建结果:

const s = "aabbc";
if (s.length === 0) {
    console.log("");
} else {
    const result = [s[0]];
    for (let i = 1; i < s.length; i++) {
        if (s[i] !== result[result.length - 1]) {
            result.push("$");
        }
        result.push(s[i]);
    }
    const finalStr = result.join("");
    console.log(finalStr); // 输出: aa$bb$c
}

正则表达式法

如果想更简洁,可以用正则快速匹配不同字符的边界,直接替换插入$:

const s = "aabbc";
const finalStr = s.replace(/(?<=.)(?!\1)/g, "$");
console.log(finalStr); // 输出: aa$bb$c

这里的正则/(?<=.)(?!\1)/g可以拆解下:

  • (?<=.):正向肯定预查,确保当前位置前面有字符(避免在字符串开头插入)
  • (?!\1):负向预查,确保当前字符和前面捕获的字符(\1)不一样
  • 把所有匹配到的位置替换成$,就刚好在不同字符之间插入了分隔符
通用核心思路

不管用哪种语言,核心逻辑都是这几点:

  • 先处理空字符串这类边界情况(如果输入可能为空的话)
  • 从第二个字符开始,逐个和前一个原字符对比
  • 当当前字符和前一个不同时,在两者之间插入$
  • 最后拼接所有部分得到最终字符串

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:31:01