Frontend

😲 β€œ((” 이게 λ‹€λ₯΄λ‹€κ³ ? β€” κ΄„ν˜Έμ˜ μˆ¨κ²¨μ§„ 정체


μ–΄λŠ λ‚ , ((와 같은 κ΄„ν˜Έκ°€ ν…μŠ€νŠΈ μΉ˜ν™˜μ΄ μ•ˆ λ˜λŠ” μ΄μƒν•œ 상황을 λ§ˆμ£Όν–ˆμŠ΅λ‹ˆλ‹€. λΆ„λͺ… μ½”λ“œμ—μ„œλŠ” β€œ(β€œλ₯Ό 잘 μΈμ‹ν•˜κ³  μžˆμ—ˆλŠ”λ°, ν˜„μ‹€μ—μ„œλŠ” μž‘λ™ν•˜μ§€ μ•Šλ”κ΅°μš”. μ™œ κ·ΈλŸ΄κΉŒμš”?


βœ… κ΄„ν˜Έλ„ λ‹€λ₯Ό 수 μžˆλ‹€?

μš°λ¦¬κ°€ ν”νžˆ μ“°λŠ” κ΄„ν˜Έ (와 )λŠ” ν‚€λ³΄λ“œμ—μ„œ μ‰½κ²Œ μž…λ ₯ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 그런데 λ¬Έμ œλŠ” λ¬Έμ„œλ‚˜ μž…λ ₯κΈ°, ν™˜κ²½μ— 따라 λΉ„μŠ·ν•΄ λ³΄μ΄μ§€λ§Œ μ™„μ „νžˆ λ‹€λ₯Έ 문자둜 인식될 수 μžˆλ‹€λŠ” 데 μžˆμŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ μ•„λž˜ 두 κ΄„ν˜Έλ₯Ό λ³΄μ„Έμš”:

  • ( (반각 κ΄„ν˜Έ, ASCII)
  • ( (전각 κ΄„ν˜Έ, Full-width)

πŸ” μ‹€μ œλ‘œ ν™•μΈν•΄λ³΄μž: μœ λ‹ˆμ½”λ“œ 비ꡐ

κ΄„ν˜Έμ˜ 정체λ₯Ό ν™•μΈν•˜λŠ” κ°€μž₯ ν™•μ‹€ν•œ 방법은 μœ λ‹ˆμ½”λ“œ μ½”λ“œν¬μΈνŠΈλ₯Ό μ‚΄νŽ΄λ³΄λŠ” κ²ƒμž…λ‹ˆλ‹€.

문자 이름 μœ λ‹ˆμ½”λ“œ

(반각 μ†Œκ΄„ν˜Έ (half-width)U+0028
οΌˆμ „κ° μ†Œκ΄„ν˜Έ (full-width)U+FF08

πŸ‘€ 겉보기엔 κ°™μ•„ 보여도, μ™„μ „νžˆ λ‹€λ₯Έ λ¬Έμžμž…λ‹ˆλ‹€!


🧩 μ‹€μ œ λ¬Έμ œκ°€ λ°œμƒν•˜λŠ” μ˜ˆμ‹œ

HWPλ‚˜ HWPX νŒŒμΌμ—μ„œ κ΄„ν˜Έλ₯Ό ν¬ν•¨ν•œ λ¬Έμž₯을 νŒŒμ‹±ν•  λ•Œ, ν˜Ήμ€ μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ νŠΉμ • λ¬Έμžμ—΄μ„ replace()둜 μΉ˜ν™˜ν•  λ•Œ λ‹€μŒκ³Ό 같은 일이 생길 수 μžˆμŠ΅λ‹ˆλ‹€:

item.text.replace(/\(\)/g, '[μ•„μ΄μ½˜]');

이 μ •κ·œμ‹μ€ ()만 μΈμ‹ν•˜μ§€, ( οΌ‰ 전각 κ΄„ν˜ΈλŠ” λ¬΄μ‹œν•˜κ²Œ λ©λ‹ˆλ‹€. 이럴 땐 λ‹€μŒμ²˜λŸΌ ν™•μž₯된 μ •κ·œμ‹μ„ 써야 ν•˜μ£ :

item.text.replace(/[\(\(]\s*[\)\οΌ‰]/g, '[μ•„μ΄μ½˜]');

πŸ“ μ™œ 이런 일이 μƒκΈ°λ‚˜?

  • λ¬Έμ„œ μž‘μ„± ν™˜κ²½μ΄ λ‹€λ₯΄λ©΄ μž…λ ₯λ˜λŠ” 문자의 μ’…λ₯˜λ„ λ‹¬λΌμ§‘λ‹ˆλ‹€.
  • HWP 같은 μ›Œλ“œν”„λ‘œμ„Έμ„œλŠ” λ‚΄λΆ€μ μœΌλ‘œ 전각 λ¬Έμžλ‚˜ μ‚¬μš©μž μ •μ˜ 폰트λ₯Ό μ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • HWPXλŠ” XML 기반이라 μœ λ‹ˆμ½”λ“œκ°€ λͺ…μ‹œλ˜μ§€λ§Œ, μ—¬μ „νžˆ λ‹€μ–‘ν•œ 문자 μœ ν˜•μ΄ ν˜Όμž¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

βœ… 개발자/에디터 팁

  • λ¬Έμžκ°€ μ•ˆ λ°”λ€” 땐 β€œν˜Ήμ‹œ λ‹€λ₯Έ κ΄„ν˜ΈμΈκ°€?” μ˜μ‹¬ν•΄λ³΄κΈ°!
  • λ¬Έμžμ—΄ μ •κ·œν™” (NFKC λ“±) μ‚¬μš© κ³ λ €ν•˜κΈ°
  • VSCode의 β€œUnicode Highlight” ν™•μž₯μ΄λ‚˜, 파이썬/JSμ—μ„œ charCodeAt() / ord() ν•¨μˆ˜λ‘œ μœ λ‹ˆμ½”λ“œ 확인

μ•žμœΌλ‘œ (( 같은 κ΄„ν˜Έκ°€ μΉ˜ν™˜λ˜μ§€ μ•ŠλŠ”λ‹€λ©΄, 그것이 정말 μš°λ¦¬κ°€ μƒκ°ν•˜λŠ” β€œ(β€œκ°€ λ§žλŠ”μ§€λΆ€ν„° μ˜μ‹¬ν•΄λ³΄λŠ” 게 μ’‹κ² μŠ΅λ‹ˆλ‹€. 겉λͺ¨μŠ΅μ€ 같아도 λ³Έμ§ˆμ€ λ‹€λ₯Ό 수 μžˆμœΌλ‹ˆκΉŒμš”.