如何将字符串去空格后按指定长度n分割为若干块?
字符串处理解决方案
当然可以!我来帮你搞定这个字符串处理需求,先拆解清楚逻辑,再给你具体的实现代码~
需求拆解
你的需求可以拆成三个明确的步骤:
- 先把原字符串里的所有空格去掉,得到一段无空格的连续字符串
- 将这段无空格字符串分割成每个块长度为n的片段(最后一个块的长度可以小于n)
- 把这些分割好的片段用空格拼接起来,得到最终结果
拿你举的例子来说:
- 原字符串:
msg = 'hello world' - 步骤1处理后得到:
'helloworld'(长度为10) - 当n=7时,分割成
['hellowo', 'rld'],最后拼接成'hellowo rld'
(注:你给出的示例结果是'hellowo orld',可能是笔误,不过核心逻辑是一致的)
代码实现(Python)
方法一:直观分步实现
这种方式逻辑清晰,适合新手理解每一步的操作:
def process_message(msg, chunk_length): # 步骤1:移除所有空格 no_space_str = msg.replace(" ", "") # 步骤2:按指定长度分割字符串 chunks = [] for i in range(0, len(no_space_str), chunk_length): chunks.append(no_space_str[i:i+chunk_length]) # 步骤3:用空格连接所有块 return " ".join(chunks) # 测试示例 original_msg = 'hello world' n = 7 result = process_message(original_msg, n) print(result) # 输出: hellowo rld
方法二:简洁一行代码
如果追求代码的简洁性,可以把所有逻辑压缩成一行:
original_msg = 'hello world' n = 7 result = " ".join([original_msg.replace(" ", "")[i:i+n] for i in range(0, len(original_msg.replace(" ", "")), n)]) print(result) # 同样输出: hellowo rld
扩展说明
- 这个方法不仅适用于单个空格的情况,不管原字符串里有多少个连续空格,
replace(" ", "")都会全部移除 - 如果n的值大于无空格字符串的长度,那么结果就是无空格字符串本身(不会分割)
内容的提问来源于stack exchange,提问作者locrian.elder




