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

如何使用while/if等基础语句替换字符串非指定索引位置的特定字符

实现思路

整个逻辑仅靠while循环、if条件判断就能实现,不需要调用复杂的内置字符串处理方法,核心流程如下:

  • 正向遍历字符串,定位第一个出现的小写a的索引
  • 反向遍历字符串,定位最后一个出现的小写a的索引
  • 逐字符遍历原串拼接结果:当前字符为a,且所在位置不是刚才找到的首尾两个a的位置时,替换为大写A,其余字符原样保留

特殊情况处理:如果字符串中a的数量小于2,不存在需要替换的中间a,直接返回原字符串即可。

代码实现
# 原始字符串
s = "alba iuliara"
str_length = len(s)
first_a_pos = -1
last_a_pos = -1

# 正向查找第一个a的位置
i = 0
while i < str_length:
    if s[i] == 'a':
        first_a_pos = i
        break
    i += 1

# 反向查找最后一个a的位置
i = str_length - 1
while i >= 0:
    if s[i] == 'a':
        last_a_pos = i
        break
    i -= 1

result = ""
# a的数量不足2个,直接返回原字符串
if first_a_pos == -1 or first_a_pos == last_a_pos:
    result = s
else:
    # 逐字符拼接最终结果
    i = 0
    while i < str_length:
        current_char = s[i]
        if current_char == 'a' and i != first_a_pos and i != last_a_pos:
            result += 'A'
        else:
            result += current_char
        i += 1

print(result)

运行上述代码会直接输出预期结果:albA iuliAra

逻辑校验

针对测试用例alba iuliara核对位置关系:

  • 第一个a在索引0位,最后一个a在索引11位,这两个位置的a保持小写
  • 字符串中间的两个a分别在索引3、索引9位,符合替换规则,转为大写A
  • 其余字符全部原样保留,最终拼接结果和预期完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:45:29