waffle
μ™€ν”Œκ³΅μž₯
waffle
전체 방문자
였늘
μ–΄μ œ
  • λΆ„λ₯˜ 전체보기 (72)
    • πŸ“’ Daily Log (2)
    • πŸ”¨ Dev_BE (5)
      • κ°œλ…μ •λ¦¬ (4)
      • 기둝 (1)
    • πŸ”¨ Dev_FE (4)
    • πŸ”¨ Dev_DB (1)
    • βš™ Dev_Ops (0)
    • πŸ”‘ Lang (2)
      • Python (2)
    • πŸ’‘ ν”„λ‘œμ νŠΈ (9)
      • Base (1)
      • μ•„λŒ€λ°€λ§΅ (8)
    • πŸƒπŸ» μ™ΈλΆ€ν™œλ™ (2)
      • [ν”„λ¦¬μ½”μŠ€] μš°μ•„ν•œν…Œν¬μ½”μŠ€ 7κΈ° - BE (2)
    • πŸ“• [STUDY] 개발 (13)
      • [STUDY] μ•Œκ³ λ¦¬μ¦˜ (9)
      • 동계 μŠ€ν„°λ”” [Do-iT: μ›ΉνŒ©] (2021) (4)
    • πŸ“™ [STUDY] AI (2)
      • Tensorflow (2)
    • πŸ” λ³΄μ•ˆ,μ •λ³΄λ³΄ν˜Έ (32)
      • CTF (2)
      • πŸ“˜ [STUDY] ν¬λ Œμ‹ (15)
      • πŸ“˜ [STUDY] 취약점 (4)
      • πŸ“˜ [STYDY] 리버싱 (11)
    • πŸ“” IT 법λ₯  (0)

λΈ”λ‘œκ·Έ 메뉴

  • ν™ˆ
  • νƒœκ·Έ

곡지사항

인기 κΈ€

νƒœκ·Έ

  • ν”„λ¦¬μ½”μŠ€
  • til
  • reversing
  • ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€
  • JAVA_API
  • js
  • API
  • μš°μ•„ν•œν…Œν¬μ½”μŠ€
  • μ½”λ”©ν…ŒμŠ€νŠΈ_고득점
  • write-up
  • μ•„μ£ΌλŒ€_μ•Œκ³ λ¦¬μ¦˜_ꡐ윑
  • sql
  • μš°ν…Œμ½”_7κΈ°
  • λ¬Έμžμ—΄
  • κ°œλ°œλ°±μ„œ
  • dopwn
  • scrum
  • gdb
  • μˆ˜ν•™_1
  • λ°±μ€€
  • μš°ν…Œμ½”
  • μˆ˜ν•™_1(μ—°μŠ΅)
  • μ—°μŠ΅_자료ꡬ쑰
  • javascript
  • 개발
  • λ°μΌλ¦¬μ•Œκ³ 
  • Java
  • μ•Œκ³ λ¦¬μ¦˜
  • Weekly
  • 자료ꡬ쑰

졜근 λŒ“κΈ€

졜근 κΈ€

ν‹°μŠ€ν† λ¦¬

hELLO Β· Designed By μ •μƒμš°.
waffle

μ™€ν”Œκ³΅μž₯

πŸ”¨ Dev_FE

[ JS ] λ¬Έμžμ—΄λ‚΄μ˜ νŠΉμ • λ¬Έμžμ—΄ λͺ¨λ‘ λŒ€μΉ˜ν•˜κΈ°

2022. 1. 25. 17:40
728x90

0. κ°œμš”

 

js둜 ν”„λ‘œμ νŠΈ μ§„ν–‰ 쀑 μ΅œκ·Όμ— μƒˆλ‘­κ²Œ μ—…λ°μ΄νŠΈλœ λ¬Έμžμ—΄ λ©”μ„œλ“œλ₯Ό κ³΅λΆ€ν•˜κ³  μ μš©ν•˜κ³ μž 이 글을 μž‘μ„±ν•¨

 

1. ν•™μŠ΅λͺ©μ 

 

λ¬Έμžμ—΄μ—μ„œ νŠΉμ • λ¬Έμžμ—΄μ„ λͺ¨λ‘ λŒ€μΉ˜ν•˜λŠ” λ‹€μ–‘ν•œ λ©”μ„œλ“œ 확인

μ‹€μ „μ—μ„œ ν™œμš© κ°€λŠ₯ν•œ λ‹€μ–‘ν•œ λ¬Έμžμ—΄ μΉ˜ν™˜λ²• ν•™μŠ΅

 

2. ν•™μŠ΅λ‚΄μš©

 

jsμ—λŠ” prototype을 톡해 μ§€μ •λœ λ‹€μ–‘ν•œ λ©”μ„œλ“œλ“€μ΄ μ‘΄μž¬ν•©λ‹ˆλ‹€.

이 λ©”μ„œλ“œλ₯Ό 톡해 μ–΄λ ΅κ²Œ ꡬ성해야 ν•  μ½”λ“œλ“€μ„ κ°„λ‹¨ν•˜κ²Œ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€.

 

λ§Œμ•½ λ¬Έμžμ—΄μ—μ„œ νŠΉμ • 문자λ₯Ό 찾고자 ν•œλ‹€λ©΄, 우린 λ‹¨μˆœνžˆ indexOf λΌλŠ” λ©”μ„œλ“œλ₯Ό 톡해 문자 λ‚΄ νŠΉμ • 문자의 μœ„μΉ˜λ₯Ό μ‰½κ²Œ 찾을 수 μžˆμŠ΅λ‹ˆλ‹€.

"abcdefg".indexOf(c) // 2

 

ν•˜μ§€λ§Œ indexOf λ©”μ„œλ“œκ°€ μ—†λ‹€λ©΄?

function findIndexOfChar ( base_string, character ) {
	for (var i = 0; i < base_string.length; i++) {
    	if ( base_string[i] === character ) return i;
    }
}

findIndexOfChar( "abcdefg", "c" ) // 2

 

μ½”λ“œ μž‘μ„±μ‹œκ°„μ΄ κΈΈμ–΄μ§€κ³  κ·Έ 길이도 κΈΈμ–΄μ§€κ² μ£ .

이λ₯Ό μœ„ν•΄μ„œ 효율적인 λ©”μ„œλ“œμ˜ ν™œμš©μ€ ꡉμž₯히 μ€‘μš”ν•œλ°, 졜근 λ¬Έμžμ—΄μ˜ μΉ˜ν™˜μ— κ΄€λ ¨λœ μƒˆλ‘œμš΄ λ©”μ„œλ“œκ°€ μΆ”κ°€λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

 

1) 기쑴에 λ¬Έμžμ—΄μ„ μΉ˜ν™˜ν•˜κΈ° μœ„ν•œ 방법

 

기쑴에 이전 λ¬Έμžμ—΄μ„ λ°”κΎΈκΈ° μœ„ν•œ λ°©λ²•μ—λŠ” μ—¬λŸ¬κ°€μ§€κ°€ μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

λŒ€ν‘œμ μœΌλ‘œλŠ” replace() λ©”μ„œλ“œκ°€ μžˆλŠ”λ°,

 

"abcdefgabc".replace("abc", "xxx") // "xxxdefgabc"

 

μ΄λŸ°μ‹μœΌλ‘œ 쑰건에 λ§žλŠ” 뢀뢄을 μ°Ύμ•„ μ£Όμ–΄μ§„ λ¬Έμžμ—΄λ‘œ μΉ˜ν™˜ν•©λ‹ˆλ‹€.

ν•˜μ§€λ§Œ 이 λ°©μ‹μ˜ 단점은 μΌμΉ˜ν•˜λŠ” κ°€μž₯ μ•žμͺ½ λ¬Έμžμ—΄λ§Œ μΉ˜ν™˜λœλ‹€λŠ” κ²ƒμ΄μ—ˆλŠ”λ°μš”, 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ λ§Žμ€ κ°œλ°œμžλ“€μ€ 'μ •κ·œμ‹'을 μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€.

μ •κ·œμ‹μ„ μ‚¬μš©ν•˜μ—¬ 쑰건에 λ§žλŠ” λͺ¨λ“  λ¬Έμžμ—΄μ„ λ°”κΏ”μ£ΌλŠ” μ½”λ“œλŠ” μ•„λž˜μ™€ 같이 λ°”λ€λ‹ˆλ‹€:

 

"abcdefgabc".replace(/abc/g, "xxx") // xxxdefgxxx

 

 

 

ν•΄λ‹Ή νŒ¨ν„΄μ— λΆ€ν•©ν•˜λŠ” λ‹€μ–‘ν•œ μœ„μΉ˜κ°€ μ‘΄μž¬ν•  경우 λͺ¨λ“  μœ„μΉ˜μ˜ 값이 λ³€κ²½λ©λ‹ˆλ‹€. ( μ •κ·œμ‹μ˜ 'g' ν‚€μ›Œλ“œ 덕뢄 )

 

2) μƒˆλ‘­κ²Œ μΆ”κ°€λœ λ©”μ„œλ“œ: replaceAll()

 

μƒˆλ‘­κ²Œ μΆ”κ°€λœ replaceAll은 μœ„μ—μ„œ μ •κ·œμ‹μ„ μ“°λŠ” 과정을 λœμ–΄μ€λ‹ˆλ‹€.

 

"abcdefgabc".replaceAll("abc", "xxx") // xxxdefgxxx

 

μ‹¬ν”Œν•΄μ‘Œμ£ .

단, 기쑴에 μ‚¬μš©ν•˜λ˜ μ •κ·œμ‹ 방식은 항상 'g' ν‚€μ›Œλ“œλ₯Ό λΆ™μ—¬μ•Ό ν•©λ‹ˆλ‹€.

 

"abcdefgabc".replaceAll(/abc/, "xxx") // TypeError: replaceAll must be called with a global RegExp
"abcdefgabc".replaceAll(/abc/g, "xxx") // "xxxdefgxxx"

 

단, μ£Όμ˜ν•  점은 이 λ©”μ„œλ“œκ°€ μ§€μ›λ˜μ§€ μ•ŠλŠ” λΈŒλΌμš°μ €λ“€μ΄ μ‘΄μž¬ν•œλ‹€λŠ” μ μž…λ‹ˆλ‹€.

크둬과 edgeλŠ” 85버전 이상, NodeλŠ” 15버전 이상, IEλŠ” λ―Έμ§€μ›μž…λ‹ˆλ‹€.

 

+) μ—¬λ‹΄

 

인터넷에 올라온 글듀을 λ³΄λ‹ˆ μ—…λ°μ΄νŠΈ λœμ§€ 1λ…„ 쑰금 λ„˜μ€ 것 κ°™μŠ΅λ‹ˆλ‹€.

아직 vscodeμ—μ„œλŠ” λ©”μ„œλ“œλ¦¬μŠ€νŠΈμ— ν‘œμ‹œλ˜μ§„ μ•Šλ„€μš”.

 

 

3. 정리

String.prototype.replaceAll() λ©”μ„œλ“œκ°€ 좔가됨

μ •κ·œμ‹μ΄λ‚˜ forλ¬Έ 없이 λͺ¨λ“  λ¬Έμžμ—΄ λŒ€μ²΄κ°€ κ°€λŠ₯

κ΅¬ν˜• λΈŒλΌμš°μ € 미지원.

728x90
λ°˜μ‘ν˜•

'πŸ”¨ Dev_FE' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[ CSS ] CSS λͺ¨λ°”일 Transition κ°œμ„   (0) 2022.02.13
[ JS ] 1. 컴파일  (0) 2021.08.28
[ vanilla js ] Web Worker API (κ°œλ…νŽΈ)  (0) 2021.07.20
    'πŸ”¨ Dev_FE' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • [ CSS ] CSS λͺ¨λ°”일 Transition κ°œμ„ 
    • [ JS ] 1. 컴파일
    • [ vanilla js ] Web Worker API (κ°œλ…νŽΈ)
    waffle
    waffle
    개발기술 κ΄€λ ¨ 글듀은 velog에 μžˆμŠ΅λ‹ˆλ‹€ :) (https://velog.io/@cm_waffle) Developer waffle = new Waffle();

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”