sourcecode

다른 문자열의 x 위치에 문자열 삽입

copyscript 2022. 12. 6. 22:06
반응형

다른 문자열의 x 위치에 문자열 삽입

변수가 두 개이므로 문자열을 삽입해야 합니다.b끈으로 묶어서a에 의해 대표되는 점에서position제가 찾는 결과는 "사과 먹고 싶어요"입니다.JavaScript를 사용하여 이 작업을 수행하려면 어떻게 해야 합니까?

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

var a = "I want apple";
var b = " an";
var position = 6;
var output = [a.slice(0, position), b, a.slice(position)].join('');
console.log(output);


옵션:String의 시제품 방법으로서

다음을 사용하여 접합할 수 있습니다.text원하는 다른 문자열 내에서index(옵션으로)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);

편집: 기존 기능으로 대체되었습니다(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr) 참조).

이 함수를 문자열 클래스에 추가할 수 있습니다.

String.prototype.insert_at=function(index, string)
{   
  return this.substr(0, index) + string + this.substr(index);
}

임의의 문자열 오브젝트에서 사용할 수 있도록 합니다.

var my_string = "abcd";
my_string.insertAt(1, "XX");

ES6 스트링 리터럴을 사용하면 훨씬 짧아집니다.

const insertAt = (str, sub, pos) => `${str.slice(0, pos)}${sub}${str.slice(pos)}`;
    
console.log(insertAt('I want apple', ' an', 6)) // logs 'I want an apple'

index Of()를 사용하여 다음과 같이 위치를 결정하는 것이 좋습니다.

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" 뒤에 공백을 넣었습니다.

밑줄문자열 라이브러리에는 삽입을 수행하는 함수가 있습니다.

insert(string, index, substring) => 문자열

그렇게

insert("Hello ", 6, "world");
// => "Hello world"

해라

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

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

var r= a.slice(0,position) + b + a.slice(position);

console.log(r);

또는 regexp 솔루션

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

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

var r= a.replace(new RegExp(`^(.{${position}})`),"$1"+b);

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

ES2018의 뒷모습을 사용할 수 있는 경우, N번째 문자 뒤에 0번째 너비 위치에서 ES2018을 "대체"하는 regexp 솔루션이 하나 더 있습니다(@Kamil Kiewczewski와 유사하지만 캡처 그룹에 초기 문자를 저장하지 않음).

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

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

var r= a.replace(new RegExp(`(?<=^.{${position}})`), b);

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

var array = a.split(' '); 
array.splice(position, 0, b);
var output = array.join(' ');

이 방법은 더 느리지만, 그 전후의 공간 추가에 대응합니다.또한 위치 값을 변경해야 합니다(더 직관적입니다).

퀵픽스!공간을 수동으로 추가하지 않으려면 다음을 수행할 수 있습니다.

var a = "I want apple";
var b = "an";
var position = 6;
var output = [a.slice(0, position + 1), b, a.slice(position)].join('');
console.log(output);

(편집: 이 답변은 실제로 위에 기재되어 있습니다.죄송합니다!)

약간의 변경만 있으면 됩니다.위 솔루션에서 출력된 것입니다.

"사과 먹고 싶다"

대신

"사과 먹고 싶다"

로서 출력을 취득하려면

"사과 먹고 싶다"

다음과 같은 수정된 코드를 사용합니다.

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

와 함께RegExp교체하다

var a = 'I want apple';
var b = ' an';
var position = 6;
var output = a.replace(new RegExp(`^(.{${position}})(.*)`), `$1${b}$2`);

console.log(output);

정보:

언급URL : https://stackoverflow.com/questions/4364881/inserting-string-at-position-x-of-another-string

반응형