我有两个变量,需要将字符串b插入字符串a,在position表示的点上。我想要的结果是“我想要一个苹果”。我如何用JavaScript做到这一点?

var a = 'I want apple';
var b = ' an';
var position = 6;

当前回答

使用ES6字符串字面值,会短得多:

const insertAt = (str, sub, pos) => ' ${str。片(0,pos)} ${子}$ {str.slice (pos)} '; console.log(insertAt('I want apple', ' an', 6)) // log '我想要一个苹果'

其他回答

var output = a.substring(0, position) + b + a.substring(position);

编辑:.substr替换为.substring,因为.substr现在是一个遗留函数(根据https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr)

用RegExp替换 var a = '我想要苹果'; Var b = ' an'; Var位置= 6; var = a.replace(输出新的正则表达式(^(。{${位置 }})(.*)`), `$ 1 $ {b} $ 2 '); console.log(输出);

信息:

String.prototype.replace () 正则表达式

如果ES2018的回溯可用,还有一个regexp解决方案,使用它来“替换”第n个字符后的零宽度位置(类似于@Kamil kiezczewski的方法,但没有将初始字符存储在捕获组中):

"I want apple".replace(/(?<=^.{6})/, " an")

var a =“我想要苹果”; Var b = " an"; Var位置= 6; var r = a.replace(新RegExp (`(?<=^.{${ 位置}})),b); console.log (r); console.log(“我想要苹果”.replace(/(? < = ^{6}) /,“一个”);

快速修复!如果你不想手动添加空格,你可以这样做:

var a =“我想要苹果”; Var b = "an"; Var位置= 6; Var输出= [a.]Slice (0, position + 1), b, a.slice(position)].join("); console.log(输出);

(编辑:我看到上面已经回答了这个问题,对不起!)

使用ES6字符串字面值,会短得多:

const insertAt = (str, sub, pos) => ' ${str。片(0,pos)} ${子}$ {str.slice (pos)} '; console.log(insertAt('I want apple', ' an', 6)) // log '我想要一个苹果'