Как отключить интерполяцию строк в Котлине?

У меня есть текст типа "$ $abc $$abc ${a} ${}". Я хотел бы полностью отключить интерполяцию строк для строки, а не избегать каждого отдельного $ из строки. Что я должен делать? В Scala вы объявляете строку, в которой интерполяция включена с помощью s"$ $abc $$abc ${a} ${}", в то время как обычная строка не интерполируется.


person raisercostin    schedule 01.06.2018    source источник


Ответы (1)


Интерполяция строк доступна как для обычных, так и для необработанных строк ("""). Поэтому вам нужно избегать их, что, очевидно, проще в обычном String (см. здесь).

"$ \$abc \$\$abc \${a} \${}"

Извините, но другого выхода, боюсь, нет.

person s1m0nw1    schedule 01.06.2018
comment
На самом деле было бы неплохо иметь что-то вроде C# дословной строки @"$a$b$c" == "\$a\$b\$c", не так ли? - person Amir Abiri; 18.08.2019
comment
Жаль, что синтаксис с одинарными кавычками сохранился только для символов. Семантическое дерево IMO Kotlin может считать, что «$» и «x» — это одиночные символы, а «$$» и «xx» — неинтерполированные строки, поскольку вы всегда можете использовать \$ и x для строк с длиной одного символа. Может в будущей версии? Поскольку эволюция полностью обратно совместима (за исключением синтаксического анализа тестовых случаев, ожидающих ошибки синтаксического анализа), это вполне выполнимо. - person Claude Brisson; 27.11.2020