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

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

当前回答

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


可选:作为String的原型方法

下面可以使用一个可选的removeCount参数,在另一个字符串中按所需索引拼接文本。

if (String.prototype.splice === undefined) { /** * Splices text within a string. * @param {int} offset The position to insert the text at (before) * @param {string} text The text to insert * @param {int} [removeCount=0] An optional number of characters to overwrite * @returns {string} A modified string containing the spliced text. */ String.prototype.splice = function(offset, text, removeCount=0) { let calculatedOffset = offset < 0 ? this.length + offset : offset; return this.substring(0, calculatedOffset) + text + this.substring(calculatedOffset + removeCount); }; } let originalText = "I want apple"; // Positive offset console.log(originalText.splice(6, " an")); // Negative index console.log(originalText.splice(-5, "an ")); // Chaining console.log(originalText.splice(6, " an").splice(2, "need", 4).splice(0, "You", 1)); .as-console-wrapper { top: 0; max-height: 100% !important; }

其他回答

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)

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


可选:作为String的原型方法

下面可以使用一个可选的removeCount参数,在另一个字符串中按所需索引拼接文本。

if (String.prototype.splice === undefined) { /** * Splices text within a string. * @param {int} offset The position to insert the text at (before) * @param {string} text The text to insert * @param {int} [removeCount=0] An optional number of characters to overwrite * @returns {string} A modified string containing the spliced text. */ String.prototype.splice = function(offset, text, removeCount=0) { let calculatedOffset = offset < 0 ? this.length + offset : offset; return this.substring(0, calculatedOffset) + text + this.substring(calculatedOffset + removeCount); }; } let originalText = "I want apple"; // Positive offset console.log(originalText.splice(6, " an")); // Negative index console.log(originalText.splice(-5, "an ")); // Chaining console.log(originalText.splice(6, " an").splice(2, "need", 4).splice(0, "You", 1)); .as-console-wrapper { top: 0; max-height: 100% !important; }

好吧,只是一个小变化,因为上面的解决方案输出

“我想要一个苹果”

而不是

“我想要一个苹果”

得到输出为

“我想要一个苹果”

使用以下修改过的代码

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

如果你像这样使用indexOf()来确定位置,可能会更好:

function insertString(a, b, at)
{
    var position = a.indexOf(at); 

    if (position !== -1)
    {
        return a.substr(0, position) + b + a.substr(position);    
    }  

    return "substring not found";
}

然后像这样调用函数:

insertString("I want apple", "an ", "apple");

注意,我在函数调用中的“an”后面加了一个空格,而不是在return语句中。

try

a.slice(0,position) + b + a.slice(position)

var a =“我想要苹果”; Var b = " an"; Var位置= 6; Var r= a.slice(0,位置)+ b + a.slice(位置); console.log (r);

或regexp解决方案

"I want apple".replace(/^(.{6})/,"$1 an")

var a =“我想要苹果”; Var b = " an"; Var位置= 6; var r = a.replace(新RegExp(' ^({${职位}})),“$ 1”+ b); console.log (r); console.log(“我想要苹果”.replace(/ ^({6}) /,“1美元”));