개발팁2020. 3. 3. 12:52

C# 언어에서는 string.Format 또는 String.Format 이 굉장히 유용하게 문자열을 생성하는 메서드인데,

자바스크립트에서는 이런 기능이 없어 아쉽다.

 

String.Format("{0}, {1}!", "Hello", "World");

=> Hello, World!

 

자바스크립트에서는 문자열 객체가 String 이므로, String 객체안에다 만들것이고,

자바스크립트가 일반적으로 카멜 케이스 (Camel Case) 를 사용하므로, 소문자 f 로 시작하는 format 이라는 함수를 만들 것이다.

 

C# 언어의 Format 의 기능은 다양하고 상당히 많지만, 여기서는 단순위 replace 만 할것이다.

 

C# 의 String.Format 의 기능이 궁금하다면 아래 링크에서 확인할 수 있다.

 

https://docs.microsoft.com/ko-kr/dotnet/api/system.string.format

 

String.Format 메서드 (System)

 

지정된 형식에 따라 개체의 값을 문자열로 변환하여 다른 문자열에 삽입 합니다.Converts the value of object

docs.microsoft.com

 

여기서는 단순히 {0}, {1}, ... {n} 으로만 치환할 것이다.

 

String.format = function() {
	let args = arguments;

	return args[0].replace(/{(\d+)}/g, function(match, num) {
		num = Number(num) + 1;
		return typeof(args[num]) != undefined ? args[num] : match;
    });
}

 

 

파라미터 갯수가 정해지 있지 않기 때문에, 함수 구문 ( function() ) 에 파라미터명은 넣지 않았다.

첫번째 파라미터는 문자열로 { 문자와 숫자(정규식의 \d) } 을 만나면, 뒤의 n+1 번째 파라미터로 replace 하게 된다.

 

 

"Hello" + ", " + "World" + "!";

=> Hello, World!



String.format("{0}, {1}!", "Hello", "World");

=> Hello, World!

 

 

그외에도 변수를 이용해서 치환이 가능하기 때문에, 사용도 편하고, 가독성도 훨씬 좋을것이다.

 

Posted by 헝개