Как вывести "" "в" здесь документы "Скала? - PullRequest
7 голосов
/ 26 июля 2010

В scala "здесь документы" начинаются и заканчиваются в 3 "

val str = """Hi,everyone"""

Но что, если строка содержит """?Как вывести Hi,"""everyone?

Ответы [ 4 ]

9 голосов
/ 26 июля 2010

Поскольку экранирование Юникода через \u0022 в многострочных строковых литералах вам не поможет, так как они будут оцениваться как те же самые три кавычки, ваш единственный шанс - объединить так:1004 * Хорошо то, что компилятор scala достаточно умен, чтобы это исправить, и поэтому при компиляции он сделает из него одну-единственную строку.

object o {
  val s = """Hi, """+"""""""""+"""everyone"""
  val t = "Hi, \"\"\"everyone"
}

и использование scala -print

Main$$anon$1$o.this.s = "Hi, """everyone";
Main$$anon$1$o.this.t = "Hi, """everyone";

Обратите внимание, что вы не можете ввести его таким образом.Формат, который выводит scala -print, по-видимому, предназначен только для внутреннего использования.

Тем не менее может существовать более простой и простой способ сделать это.

5 голосов
/ 27 июля 2010

Это полный взлом, который я отправил на похожий вопрос , но он работает и здесь: используйте XML-структуры Scala в качестве промежуточного формата.

val str = <a>Hi,"""everyone</a> text

Это даст вам строку с тремя двойными кавычками.

2 голосов
/ 26 июля 2010

Вы не можете использовать тройные кавычки, насколько я знаю. В спецификации, раздел 1.3.5, говорится:

Многострочный строковый литерал - это последовательность символов, заключенная в тройные кавычки "" "..." "". Последовательность символов произвольна, за исключением того, что она может содержать три или более полезных кавычки только в самом конце. Персонажи должны не обязательно быть печатным; переводы строки и другие управляющие символы также разрешены. Unicode-экранирование работает, как и везде, но ни одна из escape-последовательностей в (§1.3.6) интерпретируется.

Таким образом, если вы хотите вывести три кавычки в строке, вы все равно можете использовать строку в одинарных кавычках с экранированием:


scala> val s = "Hi, \"\"\"everyone"
s: java.lang.String = Hi, """everyone
2 голосов
/ 26 июля 2010

вы не можете

scala heredocs являются необработанными строками и не используют escape-коды если вам нужны тройные кавычки в строке, используйте конкатенацию строк, добавьте их

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...