AAなどの文字列はエスケープすると超絶見難くなるのでそのまま書きたくなった。
string dman = " ____\n L__L|\n / \\\n / \\\n / _______ \\\n \\ \\#/ \\/ \\ /\n \\|#| O| O|#\\\n |#L _L__ #|\n |###| |##|\n /###/ /##|\n /###/ /##|\n /###/___/###/\n /###########/\n /##########/\n / \\\n \\ /\n _ \\ /__\n |__/ |__/";
[^1]
Delimited Stringsというものがある。[^2]デリミタ、文字列の終了を表す記号のある文字列である。それを使って以下のように書ける。
string s = q"/123"\n\n"/";//string dman = "123\"\\n\\n\"";
writeln(s);
123"\n\n"
通常エスケープしなければならない"がそのまま出力され、改行を表すはずの\nがそのまま出力されている。うれしい。この場合/がデリミタとなって、それに囲まれた部分で自由に書ける。ただしデリミタである/は書けない。
string s = q"/a/a/";//エラーになる
ただしNesting Delimiterという特殊なデリミタもある。
string s1 = q"((a)())";//(a)()
string s2 = q"(a(a)";//これはだめ
たくさんのカッコで囲まれた文字列とかを書くときに必要かもしれない。
好きな言葉をデリミタに使うこともできる。その場合デリミタのすぐ後に改行を入れる必要がある。
string dman = q"DmanisGod
____
L__L|
/ \
/ \
/ _______ \
\ \#/ \/ \ /
\|#| O| O|#\
|#L _L__ #|
|###| |##|
/###/ /##|
/###/ /##|
/###/___/###/
/###########/
/##########/
/ \
\ /
_ \ /__
|__/ |__/
DmanisGod";
writeln(dman);
____
L__L|
/ \
/ \
/ _______ \
\ \#/ \/ \ /
\|#| O| O|#\
|#L _L__ #|
|###| |##|
/###/ /##|
/###/ /##|
/###/___/###/
/###########/
/##########/
/ \
\ /
_ \ /__
|__/ |__/
最後に改行ができてしまうため注意が必要である。
追記
https://t.co/vx1HqYqmqd
— 黄前久美子さんと高坂麗奈さんの距離感 (@shitsyndrome) 2016年12月6日
`` リテラルでいいんじゃない?と思うんだけど、デリミタの指定込みのネタかな
```d:``リテラルを知らなかったことに死ぬほどキレてるD言語くん
string s =
____ L__L| / \ / \ / _______ \ \ \#/ \/ \ / \|#| O| O|#\ |#L _L__ #| |###| |##| /###/ /##| /###/ /##| /###/___/###/ /###########/ /##########/ / \ \ / _ \ /__ |__/ |__/;
[^3]
こっちのほうがいいですね……
[^1]: http://qiita.com/kotet/items/a04955c206a2f56e16d8
[^2]: http://dlang.org/spec/lex.html
[^3]: https://twitter.com/SagafroKichigai/status/805188096769736704