문자열 시작 부분에 텍스트 추가


답변:


214
var mystr = "Doe";
mystr = "John " + mystr;

이것이 당신을 위해 작동하지 않습니까?


이 솔루션이 다른 언어에서 사용되는 트릭에 익숙해 진 개발자에게는 "비효율적"으로 보일 수 있지만 다음은 다른 솔루션과 비교하는 테스트입니다. jsperf.com/prepend-text-to-string/5
metalim

대기뿐만 아니라 + = 작업을 사용하지 않는 것이 아니면 끝에 추가 할
JuicY_Burrito

2
@JuicY_Burrito +=텍스트 끝에 추가합니다.
Mark Kramer

127

이런 식으로 할 수 있습니다 ..

var mystr = 'is my name.';
mystr = mystr.replace (/^/,'John ');

console.log(mystr);

면책 조항 : http://xkcd.com/208/


잠깐, 공간 탈출을 잊었 어.  으으으 [taptaptap] eeeeee.


13
나는 xkcd 스트립에 대해 이것을 찬성하고 싶다. 좋은 물건! 우아한 솔루션은 정규식 프로세서를 인스턴스화하기 때문에 아마도 더 느릴 것입니다.
Rolf

13
@Rolf는 아마 아닐 것입니다. 그것은이다 확실히 댄 느린 prestring + 'original string';솔루션입니다.
가브리엘 Petrioli

2
@GabrielePetrioli 장점은 도트 체인 (파이프 라인)에 추가 할 수 있다는 것입니다. so mystr.replace (/ $ /, 'by Gabriele')와 같은 것을 추가 할 수도 있습니다. 느릴 수도 있지만 정확히 내가 찾던 것입니다.
Mateja Petrovic

2
아마도 이것이 새로운 표준이어야합니다. 각 게시물에는 관련 XKCD도 포함되어야합니다.
Brett84c

1
왠지 책상 위의 컴퓨터가 요람 속의 아기라고 생각했고, 그 남자가 아기를 때리는 것도 이상하다고 생각했습니다.
thedanotto

30

질문은 가장 빠른 방법 이 무엇인지에 대한 것이므로 성능 메트릭을 추가 할 것이라고 생각했습니다.

TL; DR 넓은 여백에 의한 승자는의이다 +운영자 및 하시기 바랍니다 정규식을 사용하지 않습니다

https://jsperf.com/prepend-text-to-string/1

여기에 이미지 설명 입력


1
우리가 시험에 원하기 때문에 앞에 추가 하고, 단지 CONCATENATE, 나는 테스트를 업데이트했습니다 jsperf.com/prepend-text-to-string/5
metalim

@metalim, 테스트에서 중요한 변경 사항이 있습니까? 접두사는 문자열 연결의 정렬 된 절반입니다. 또한 jsPerf의 경우 테스트 케이스를 루프로 처리 할 필요가 없습니다. jsPerf는 점수 기준을 얻기 위해 각 메서드를 수천 번 호출합니다. 성능 테스트는 특정 시나리오를 최적화하며 동일한 문자열 앞에 1,000 번을 추가하는 것이 얼마나 흔한 지 잘 모르겠습니다.
KyleMit

긴 문자열에 짧은 문자열을 추가하거나 짧은 문자열에 긴 문자열을 추가하면 상당한 차이가있을 수 있습니다. 임의의 문자열 앞에 짧은 문자열을 추가 하는 데 관심이 있기 때문에 테스트에서 수행되는 작업입니다. 짧은 문자열 앞에 긴 문자열을 추가하는 것입니다. 루프는 짧거나 긴 테스트를 피하기 위해 1000 개의 서로 다른 길이의 접미사 문자열을 테스트합니다. @KyleMit, 더 나은 아이디어가 있다면 다음 테스트 반복에서 자유롭게 구현하십시오.
metalim

14

ES6 :

let after = 'something after';
let text = `before text ${after}`;

7
이 코드 스 니펫은 질문을 해결할 수 있지만 설명을 포함하면 게시물의 품질을 개선하는 데 실제로 도움이됩니다. 앞으로 독자를위한 질문에 답하고 있으며, 해당 사용자는 코드 제안 이유를 모를 수 있습니다. 또한 설명 주석으로 코드를 복잡하게 만들지 마십시오. 이렇게하면 코드와 설명의 가독성이 감소합니다!
kayess

1
ES6 : 문자열 보간
Bryan Grace

8

당신은 또한 이렇게 할 수 있습니다

"".concat("x","y")

1
그리고 왜 "x".concat ( "y")가 아닌가? 다른 문자열 인스턴스화를 추가하고 느리게 만들려면?
metalim



0

당신이 사용할 수있는

var mystr = "Doe";
mystr = "John " + mystr;
console.log(mystr)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.