如何在Bash中从字符串末尾指定索引位置插入字符串或字符
实现从字符串末尾指定索引位置插入的Bash通用函数
需求说明
需要编写一个Bash函数,支持从字符串末尾的指定索引位置插入目标字符串,示例如下:
- 原字符串:
"2278" - 待插入字符串:
"." - 末尾索引位置:
3 - 预期结果:
"2.278"
实现思路
从末尾指定索引插入,本质可以转换为从开头计算的插入位置:
开头插入位置 = 原字符串长度 - 末尾索引位置
比如示例中,原字符串长度为4,4-3=1,即从开头索引1的位置插入,就能得到预期结果。
函数实现
insert_from_end() { local original_str="$1" local insert_str="$2" local end_index="$3" local str_length=${#original_str} local start_index=$((str_length - end_index)) # 处理边界情况:索引超出范围时自动调整 if (( start_index < 0 )); then start_index=0 elif (( start_index > str_length )); then start_index=$str_length fi echo "${original_str:0:start_index}${insert_str}${original_str:start_index}" }
测试示例
# 测试需求示例 original="2278" insert_char="." end_pos=3 result=$(insert_from_end "$original" "$insert_char" "$end_pos") echo "输出结果:$result" # 输出:2.278 # 边界测试:末尾索引大于字符串长度(在开头插入) result=$(insert_from_end "abcd" "X" 5) echo "边界测试1:$result" # 输出:Xabcd # 边界测试:末尾索引为0(在末尾插入) result=$(insert_from_end "abcd" "X" 0) echo "边界测试2:$result" # 输出:abcdX
相关问题
- 如何在Bash中从指定索引位置插入字符串或字符?
- 如何从当前行指定光标位置前后检索到指定边界字符的文本?
内容的提问来源于Stack Exchange,提问作者Anton Samokat
相关产品推荐
相关产品推荐

