다른 문자열의 특정 색인에 문자열을 삽입하려면 어떻게해야합니까?
var txt1 = "foo baz"
“foo”뒤에 “bar”를 삽입하고 싶다면 어떻게해야합니까?
나는 생각 substring()
했지만 더 간단하고 직접적인 방법이 있어야합니다.
답변
자신 만의 splice()
문자열을 프로토 타입으로 만들 수 있습니다 .
폴리 필
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
절대 값이 되도록 수정했습니다 .
답변
첫 번째 공백 문자가 아닌 특정 인덱스에 삽입하려면 문자열 슬라이싱 / 하위 문자열을 사용해야합니다.
var txt2 = txt1.slice(0, 3) + "bar" + txt1.slice(3);
답변
다음은 다른 모든 프로그래밍 언어와 같이 작동하는 필자가 작성한 방법입니다.
String.prototype.insert = function(index, string) {
if (index > 0)
{
return this.substring(0, index) + string + this.substring(index, this.length);
}
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 을 변경하지 않고 새 문자열을 리턴합니다 !
답변
업데이트 2016 : 다음은 하나의 라이너 접근 방식 (prepend support on 또는 negative )을 기반으로 한 또 다른 재미 있지만 더 심각한 프로토 타입 기능입니다 .RegExp
undefined
index
/**
* Insert `what` to string at position `index`.
*/
String.prototype.insert = function(what, index) {
return index > 0
? this.replace(new RegExp('.{' + index + '}'), '$&' + what)
: what + this;
};
console.log( 'foo baz'.insert('bar ', 4) ); // "foo bar baz"
console.log( 'foo baz'.insert('bar ') ); // "bar foo baz"
이전 (2012 년으로 돌아 가기) 재미있는 솔루션 :
var index = 4,
what = 'bar ';
'foo baz'.replace(/./g, function(v, i) {
return i === index - 1 ? v + what : v;
}); // "foo bar baz"
답변
누군가 문자열에 여러 인덱스로 텍스트를 삽입하는 방법을 찾고 있다면 다음을 시도하십시오.
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>!"
답변
이것은 기본적으로 @ Bass33 이하는 일을하고 있습니다. 단, 음수 색인을 사용하여 끝에서 계산하는 옵션도 제공합니다. substr 방법과 같은 종류가 허용합니다.
// use a negative index to insert relative to the end of the string.
String.prototype.insert = function (index, string) {
var ind = index < 0 ? this.length + index : index;
return this.substring(0, ind) + string + this.substring(ind, this.length);
};
사용 사례 : 명명 규칙을 사용하여 전체 크기 이미지를 가지고 있지만 축소판 URL도 제공하도록 데이터를 업데이트 할 수 없다고 가정합니다.
var url = '/images/myimage.jpg';
var thumb = url.insert(-4, '_thm');
// result: '/images/myimage_thm.jpg'