starland

[Programing] 프로그래밍 언어상의 여러줄 문자열 표현(Multiple line string literal in programming language) 본문

Progrming관련

[Programing] 프로그래밍 언어상의 여러줄 문자열 표현(Multiple line string literal in programming language)

starland 2009. 12. 8. 00:56
반응형
잘정리된 글이 있어 퍼온다.
http://dududu.tistory.com/entry/프로그래밍-언어상의-여러줄-문자열-표현Multiple-line-string-literal-in-programming-language

대부분의 언어들은 여러줄의 문자열 리터럴을 간단히 쓰기 위한 문법이 있다. 이게 뭐냐면 문자열 리터럴은 보통 "문자로 둘러 싸여서 한줄에 쓰게 된다.

"This is string"


위와 같이 말이다. 그런데 한 문자열이 한줄이 아니라 여러줄을 가지게 되면 어떻게 될까?

"This is 1st line.\nThis is 2nd line"


위와 같이 쓰면 된다. 그런데 이렇게 계속 쓰게 되면 2~3줄 정도는 괜찮지만 텍스트 분량이 많은 경우에는 상당히 보기 힘들게 된다. 프로그래밍 텍스트 에디터는 대부분 자동 줄바꿈을 사용하지 않기 때문에 더욱 그렇다.

"Q: 애초에 이렇게 쓸 수는 없나요?
A: SQL에서는 된답니다."

그래서 대부분의 프로그래밍 언어는 스트링 리터럴에 여러줄을 쓸 수 있는 특별한 문법을 지원한다.

그래서 자바도 당연히 있을 것이라고 생각했고 내가 몰라서 못쓰는 것 뿐이라고 생각했다. 하지만 자바에는 그런게 없다. 자바에서 그런 문법이 추가된다면 어떻게 될지에 대해서 토론하는 글타래가 있다.

http://www.jroller.com/scolebourne/entry/java_7_multi_line_string

또한 다른 언어에서는 이 문법이 어떻게 구현되는 지 내가 아는 프로그래밍 언어에 대해서 대충 정리해 보았다.


C, C++
char* aString = "This is 1st line.\n"
    "This is 2nd line.";

Python, Scala, Groovy

aString = """This is 1st line.
This is 2nd line."""
"문자만 사용되므로 개인적으로 가장 좋아하는 스타일이다.



Perl

$aString = <<END;
This is 1st line.
This is 2nd line.
END
이것을 heredoc 스타일이라고 하는데 다른 스크립트 언어에서도 많이 쓰인다.



C#

string aString = @"This is 1st line.
This is 2nd line.";
@하나만 추가하면 되므로 나쁘지 않다.



Java
String = "This is first line\n"
    + "This is second line";
아까 말했듯이 그런거 없다. 그냥 + 로 붙여라.
반응형