如何在另一个字符串的特定索引处插入一个字符串?
var txt1 = "foo baz"
假设我想在“foo”之后插入“bar”,我该如何实现?
我想到了substring()
,但必须有更简单更直接的方法。
如何在另一个字符串的特定索引处插入一个字符串?
var txt1 = "foo baz"
假设我想在“foo”之后插入“bar”,我该如何实现?
我想到了substring()
,但必须有更简单更直接的方法。
在特定索引处插入(而不是在第一个空格字符处)必须使用字符串切片/子字符串:
var txt2 = txt1.slice(0, 3) + "bar" + txt1.slice(3);
您可以将自己的原型制作splice()
为 String。
if (!String.prototype.splice) {
/**
* {JSDoc}
*
* The splice() method changes the content of a string by removing a range of
* characters and/or adding new characters.
*
* @this {String}
* @param {number} start Index at which to start changing the string.
* @param {number} delCount An integer indicating the number of old chars to remove.
* @param {string} newSubStr The String that is spliced in.
* @return {string} A new string with the spliced substring.
*/
String.prototype.splice = function(start, delCount, newSubStr) {
return this.slice(0, start) + newSubStr + this.slice(start + Math.abs(delCount));
};
}
String.prototype.splice = function(idx, rem, str) {
return this.slice(0, idx) + str + this.slice(idx + Math.abs(rem));
};
var result = "foo baz".splice(4, 0, "bar ");
document.body.innerHTML = result; // "foo bar baz"
编辑:修改它以确保它rem
是一个绝对值。
这是我编写的一个方法,它的行为与所有其他编程语言一样:
String.prototype.insert = function(index, string) {
if (index > 0) {
return this.substring(0, index) + string + this.substr(index);
}
return string + this;
};
//Example of use:
var something = "How you?";
something = something.insert(3, " are");
console.log(something)
只需执行以下功能:
function insert(str, index, value) {
return str.substr(0, index) + value + str.substr(index);
}
然后像这样使用它:
alert(insert("foo baz", 4, "bar "));
输出: foo bar baz
它的行为与 C# (Sharp) String.Insert(int startIndex, string value) 完全一样。
注意:此插入函数在字符串str(第一个参数)中指定整数索引(第二个参数)之前插入字符串值(第三个参数),然后在不更改str 的情况下返回新字符串!
如果有人正在寻找一种在字符串中的多个索引处插入文本的方法,请尝试以下操作:
String.prototype.insertTextAtIndices = function(text) {
return this.replace(/./g, function(character, index) {
return text[index] ? text[index] + character : character;
});
};
例如,您可以使用它<span>
在字符串中的某些偏移处插入标签:
var text = {
6: "<span>",
11: "</span>"
};
"Hello world!".insertTextAtIndices(text); // returns "Hello <span>world</span>!"