-
문자열 정의 :: Define / Escape / Literal / RegExpCode-Tip/String-handling 2020. 6. 29. 18:01
프로그래밍에서 문자열을 다루는 방법은 언어별로 크게 다르지 않다.
우선 문자열을 정의하는 방법는 크게 두가지이다.
순수한 문자열과 기능성 문자열이다.
순수 문자열은 작성한 그대로 받아지는 문자열로 Single Quotes 을 사용하여
'순수한 문자열' 과 같이 작성되며 코더가 작성한 문자를 Escape 없이 받아들인다.
기능성 문자열은 Double Quotes 로 감싸서 작성하며 순수 문자열과 다르게 특수기호를 사용한 구문에
기능을 부여한다. "이렇게 작성하면 탭을 띄우고 다음 줄로 이동한다.\t\n"
여기서 BackSlash ( \ ) 는 기능부분을 표시한다. 다음 t 나 n 은 tab , enter 의 기호로 사용된다.
그렇다면 기능성 문자열을 작성하면서 BackSlash 를 문자그대로 사용하고 싶을때는 어떻게 할까?
간단하다. \\ 로 작성하여 \ 를 문자열로 인식하도록 약속되어 있다.
이러한 특수한 기능들을 프로그래밍에서는 Escape 라 한다.
상당히 기초적이지만 빈번히 등장하며, 여러 언어를 혼합할 때, 적절한 Escape를 사용하여
문자열의 깊이를 구분해야할 때도 있다.
웹개발자라면 빈번하게 맞이하는 HTML TAG에서 Attribute 안에 특수기호를 써야하는 상황이
가장 쉽게 접할 수 있는 예다.
그럼 문자열은 Single 혹은 Double Quotes 로만 정의할 수 있는가?
아니다. 문자열은 최근 ES 에서 소개된 Backtick ( ` ) 처럼 중괄호를 사용하여 변수를 작성하는 Literal 한 방법도 있다.
(ex, `지금은 ${_time}시 입니다.` )
또한, PHP에서도 Backtick 과 비슷하게 Dobule Quotes 안에서 중괄호를 사용하여 변수의 가독성을 높이기도 한다.
이렇듯 문자열을 작성하는 방법은 여러가지가 있다.
마지막으로 알아볼 것은 문자열의 규칙성이다. 우리가 작성하는 문자는 대게 일정한 형태의 규칙을 갖는다.
예를 들어, 프로그래밍에서는 Semi colon ( ; ) 으로 줄 마감표시를 한다던지, Equal ( = ) 을 사용하여 값을 대입한다.
규칙있는 문자열이나 혹은 작성자가 얻고 싶은 부분을 찾기위해 우리는 RegExp 라는 정규화 표현을 사용한다.
RegExp 는 문자열의 규칙을 기호화하여 표현한다. 영어로 시작하는 문자열을 찾는다던가, 어떠한 형식을 갖는 문자열을
치환한다던가 할 때 사용하며, 기호화방식은 프로그래밍을 작성할 때 논리적으로 계산해야할 부분을 줄여준다.
결과적으로 프로그램 코드 자체가 간결해질 수 있고 작동이 빨라진다는 이점이 생긴다.
(ex, "/.*.sql/g" )
덫붙이자면 RegExp 를 지원하는 편집기에서는 일정규칙으로 빠른 치환을 사용할 수 있어 작업속도를 높이는
가장 효율적인 방법이기도 하다.
기초지만 경험에 의하면 언어별 특징에 따라 조금씩 상이할 수도 있기에 문자열 정의 근본을 기억하면
새로운 언어 학습에 도움된다.