如何按指定位置嵌入子串构建目标JavaScript字符串?
问题与解决方案
需求说明
现有两个字符串:
const string1 = '1111'; const string2 = '2222';
需要构造一个目标字符串,要求:
- 前4个字符为空格
string1占据第5到第8位(对应索引4-7)string2从第11位开始(对应索引10),中间用两个空格衔接- 预期输出:
" 1111 2222"
原代码问题
你提供的代码存在以下问题:
- 返回的是数组而非字符串,无法直接得到目标格式的文本
- 数组中未赋值的位置会是空元素,转字符串时无法自动填充空格
- 索引计算错误:
string1应该从索引4开始才能保证前4位是空格,原代码从索引5开始会导致第5位(索引4)空缺
正确实现方式
方法一:直接字符串拼接(简单直观)
function StringExtract() { const string1 = '1111'; const string2 = '2222'; // 前4个空格 + string1 + 两个衔接空格 + string2 return ' ' + string1 + ' ' + string2; } console.log(StringExtract()); // 输出 " 1111 2222"
方法二:数组填充后拼接(灵活适配动态长度)
如果需要更灵活地控制每个位置的内容,可以用数组初始化空格后再填充:
function StringExtract() { const string1 = '1111'; const string2 = '2222'; // 创建对应长度的数组,默认填充空格 const resultArr = new Array(4 + string1.length + 2 + string2.length).fill(' '); // 填充string1到索引4-7的位置 for (let i = 0; i < string1.length; i++) { resultArr[4 + i] = string1[i]; } // 填充string2到索引10-13的位置 for (let i = 0; i < string2.length; i++) { resultArr[10 + i] = string2[i]; } // 数组转字符串返回 return resultArr.join(''); } console.log(StringExtract()); // 输出 " 1111 2222"
内容的提问来源于stack exchange,提问作者VA1267
相关产品推荐
相关产品推荐

