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

C# 字符串处理:如何按规则合并单字符单词与相邻单词

实现方案

这个需求不需要直接遍历原始字符串处理,先把字符串按空格分割为独立单词再处理,逻辑会清晰很多,时间复杂度为O(n)(n为字符串总长度),实现非常简单。

核心逻辑

  1. 按空格切割原始字符串为单词数组,自动过滤连续空格产生的空值
  2. 遍历单词数组,只需要判断两种情况:
    • 结果列表中最后一个单词是单字符:和当前单词合并(对应单字符是首个单词的场景,和右侧合并)
    • 当前遍历到的单词是单字符:和结果列表最后一个单词合并(对应非首位单字符和左侧合并)
    • 其他情况直接把当前单词加入结果列表
  3. 最后把处理后的结果列表用空格拼接成字符串即可

代码示例(Python)

数组遍历实现

def merge_single_char_words(s: str) -> str:
    # 分割并过滤空字符串,兼容多空格分隔的场景
    words = [w for w in s.split() if w]
    if not words:
        return ""
    res = [words[0]]
    for cur_word in words[1:]:
        last_word = res[-1]
        if len(last_word) == 1 or len(cur_word) == 1:
            # 满足合并条件,拼接后替换最后一个元素
            res[-1] = last_word + cur_word
        else:
            res.append(cur_word)
    return " ".join(res)

# 测试用例
print(merge_single_char_words("a bcd tttt")) # 输出:abcd tttt
print(merge_single_char_words("abc d hhhh")) # 输出:abcd hhhh
print(merge_single_char_words("a b c de f")) # 输出:abc def

正则表达式实现(更简洁)

也可以通过正则匹配直接替换,不需要遍历数组:

import re
def merge_single_char_words(s: str) -> str:
    # 处理开头单字符和右侧单词合并
    s = re.sub(r"^(\w)\s+(\w+)", r"\1\2", s)
    # 处理非开头单字符和左侧单词合并
    s = re.sub(r"(\w+)\s+(\w)(?=\s|$)", r"\1\2", s)
    return s

如果单词允许包含非字母数字字符,只需要把正则中的\w替换为\S即可适配所有非空格字符的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:48:04