Чтобы остановить Media Player без риска исключения из-за незаконного состояния, вы должны сделать
try {
mp.reset();
mp.prepare();
mp.stop();
mp.release();
mp=null;
}
catch (Exception e)
{
e.printStackTrace();
}
, а не только
try {
mp.stop();
mp.release();
mp=null;
}
catch (Exception e)
{
e.printStackTrace();
}
Используя стиль yaml folded, каждый разрыв строки заменяется пробелом. Отступ в каждой строке будет проигнорирован.
>
This is a very long sentence
that spans several lines in the YAML
but which will be rendered as a string
without carriage returns.
http://symfony.com/doc/current/components/yaml/yaml_format.html
Для сохранения новых строк используйте |
, например:
|
This is a very long sentence
that spans several lines in the YAML
but which will be rendered as a string
with newlines preserved.
переводится на «Это очень длинное предложение\n, которое охватывает несколько строк в YAML\n, но будет отображаться как строка\n с сохраненными символами новой строки. "
|
в каждой строке по причинам, которые для меня не очевидны: groups.google.com/forum / #! Topic / pandoc-discuss / xuqEmhWgf9A
– cboettig
24 October 2013 в 20:48
1. Блок-обозначения: новые строки становятся пробелами и дополнительными символами новой строки после удаления блока
---
# Note: it has 1 new line after the string
content:
Arbitrary free text
over multiple lines stopping
after indentation changes...
...
Эквивалентный JSON
{
"content": "Arbitrary free text over multiple lines stopping after indentation changes..."
}
2. Литературный блок Скаляр: скалярный блок | будут включать в себя новые строки и любые конечные пробелы. но удаляет дополнительные
строки новой строки после блока.
---
# After string we have 2 spaces and 2 new lines
content1: |
Arbitrary free text
over "multiple lines" stopping
after indentation changes...
...
Эквивалентный JSON
{
"content1": "Arbitrary free text\nover \"multiple lines\" stopping\nafter indentation changes... \n"
}
3. + с литеральным блочным скаляром: сохранить дополнительные строки после блока
---
# After string we have 2 new lines
plain: |+
This unquoted scalar
spans many lines.
...
Эквивалентный JSON
{
"plain": "This unquoted scalar\nspans many lines.\n\n\n"
}
4. - индикатор с Literal Block Scalar: - означает, что строка новой строки в конце строки удалена.
---
# After string we have 2 new lines
plain: |-
This unquoted scalar
spans many lines.
...
Эквивалентный JSON
{
"plain": "This unquoted scalar\nspans many lines."
}
5.
---
folded_newlines: >
this is really a
single line of text
despite appearances
...
Эквивалентный JSON
{
"fold_newlines": "this is really a single line of text despite appearances\n"
}
:
будет складывать новые строки в пробелы, но удаляет дополнительные строки новой строки. более подробно вы можете посетить мой блог
В ситуациях, когда строка могла содержать пробелы или нет, я предпочитаю двойные кавычки и продолжение строки с помощью обратных косых черт:
key: "String \
with long c\
ontent"
Но обратите внимание на ловушку для случая, когда линия продолжения начинается с пробела , он должен быть экранирован (потому что он будет удален в другом месте):
key: "String\
\ with lon\
g content"
Если строка содержит разрывы строк, это должно быть записано в стиле C \n
.
См. также этот вопрос .
Возможно, вы не поверите, но YAML также может использовать многострочные клавиши:
?
>
multi
line
key
:
value
key:value
, но если ваш ключ содержит новую строку, вы можете сделать это, как описано выше
– goFrendiAsgard
9 October 2017 в 01:33
Чтобы конкатенировать длинные строки без пробелов , используйте двойные кавычки и избегайте строк новой строки с обратными косыми чертами:
key: "Loremipsumdolorsitamet,consecteturadipiscingelit,seddoeiusmodtemp\
orincididuntutlaboreetdoloremagnaaliqua."
(Спасибо @Tobia)
Если вы используете yml и Twig для переводов в Symfony и хотите использовать многострочные переводы в Javascript, возврат каретки добавляется сразу после перевода. Таким образом, даже следующий код:
var javascriptVariable = "{{- 'key'|trans -}}";
Который имеет следующий перевод yml:
key: >
This is a
multi line
translation.
По-прежнему будет выглядеть следующий код в html:
var javascriptVariable = "This is a multi line translation.
";
Итак, знак минус в Twig не решает этого. Решение состоит в том, чтобы добавить этот знак минуса после знака в yml:
key: >-
This is a
multi line
translation.
Будет иметь правильный результат, многострочный перевод на одной строке в Twig:
var javascriptVariable = "This is a multi line translation.";
Есть 5 6 NINE (или 63 *, в зависимости от того, как вы рассчитываете) разные способы записи многострочных строк в YAML.
>
, |
) Они позволяют использовать символы, такие как \
и "
без экранирования, и добавить новую строку (\n
) в конец строки
>
Сложенный стиль удаляет одиночные строки новой строки внутри строки (но добавляет один в конец и преобразует двойные строки в синглы):
Key: >
this is my very very very
long string
→ this is my very very very long string\n
|
Литеральный стиль превращает каждую новую строку внутри строки в литеральную новую строку, и добавляет один в конец:
Key: |
this is my very very very
long string
→ this is my very very very\nlong string\n
Вот официальное определение из YAML Spec 1.2
Скалярное содержимое может быть записано в блок-нотации, используя литеральный стиль (обозначается символом «|»), где все разрывы строк значительны. В качестве альтернативы, они могут быть записаны со сложенным стилем (обозначается символом «>»), где каждый разрыв строки складывается в пространство, если только он не заканчивается пустой или более с отступом.
Блок
>-
,|+
)Вы можете управлять обработкой последней новой строки в строке и любыми простыми пустыми строками (
\n\n
), добавив символ индикатора блокировки блока :
>
,|
: «clip»: сохранить линию, удалить завершающие пустые строки .>-
,|-
: «strip»: удалить линию, удалить завершающие пустые строки.>+
,|+
: «сохранить»:Скалярные стили «Поток» (
,
"
,'
)Они имеют ограниченное экранирование , и постройте однострочную строку без новых символов строки.
простой стиль (без экранирования, нет
#
или:
, ограничения на первый символ):Key: this is my very very very long string
стиль с двойными кавычками (
\
и"
должен быть экранирован\
, строки новой строки могут быть вставлены с буквальной последовательностью\n
, строки могут быть объединены без пробелов с конечным\
):Key: "this is my very very \"very\" loooo\ ng string.\n\nLove, YAML."
& rarr;
"this is my very very \"very\" loooong string.\n\nLove, YAML."
стиль с одним кадром (буквальный
'
должен быть удвоен, никаких специальных символов, возможно полезно для выражения строк, начинающихся с двойных кавычек ):Key: 'this is my very very "very" long string, isn''t it.'
& rarr;
"this is my very very \"very\" long string, isn't it."
Резюме
В этой таблице
_
означаетspace character
.\n
означает «символ новой строки» (\n
в JavaScript), за исключением строки «строки строки», где это означает буквально обратную косую черту и n).> | " ' >- >+ |- |+ -------------------------|------|-----|-----|-----|------|------|------|------ Trailing spaces | Kept | Kept | | | | Kept | Kept | Kept | Kept Single newline => | _ | \n | _ | _ | _ | _ | _ | \n | \n Double newline => | \n | \n\n | \n | \n | \n | \n | \n | \n\n | \n\n Final newline => | \n | \n | | | | | \n | | \n Final dbl nl's => | | | | | | | Kept | | Kept In-line newlines | No | No | No | \n | No | No | No | No | No Spaceless newlines| No | No | No | \ | No | No | No | No | No Single quote | ' | ' | ' | ' | '' | ' | ' | ' | ' Double quote | " | " | " | \" | " | " | " | " | " Backslash | \ | \ | \ | \\ | \ | \ | \ | \ | \ " #", ": " | Ok | Ok | No | Ok | Ok | Ok | Ok | Ok | Ok Can start on same | No | No | Yes | Yes | Yes | No | No | No | No line as key |
Примеры
Обратите внимание на конечные пробелы в строке перед «пробелами».
- > very "long" 'string' with paragraph gap, \n and spaces. - | very "long" 'string' with paragraph gap, \n and spaces. - very "long" 'string' with paragraph gap, \n and spaces. - "very \"long\" 'string' with paragraph gap, \n and s\ p\ a\ c\ e\ s." - 'very "long" ''string'' with paragraph gap, \n and spaces.' - >- very "long" 'string' with paragraph gap, \n and spaces. [ "very \"long\" 'string' with\nparagraph gap, \\n and spaces.\n", "very \"long\"\n'string' with\n\nparagraph gap, \\n and \nspaces.\n", "very \"long\" 'string' with\nparagraph gap, \\n and spaces.", "very \"long\" 'string' with\nparagraph gap, \n and spaces.", "very \"long\" 'string' with\nparagraph gap, \\n and spaces.", "very \"long\" 'string' with\nparagraph gap, \\n and spaces." ]
Стили блоков с индикаторами отступа
На всякий случай выше для вас недостаточно, вы можете добавить «индикатор отступа блока » (после индикатора блокировки блока, если он у вас есть):
- >8 My long string starts over here - |+1 This one starts here
Добавление
Если вы вставляете лишние пробелы в начале не-первых строк в стиле Folded, они будут сохранены с бонусной новой линией. Это не происходит с стилями потока:
- > my long string - my long string
→
["my long\n string\n", "my long string"]
Я даже не могу.
*
2 (или нет) и с 9 возможными индикаторами отступов (или none), 1 простой стиль и 2 кавычки: 2 x (2 + 1) x (9 + 1) + 1 + 2 = 63Часть этой информации также была обобщена здесь .
"..." + "..."
в большинстве языков программирования, или обратную косую черту перед новой строкой в Bash.
– Tobia
28 July 2016 в 15:33
:
внутри одной строки в массиве строк делает YAML интерпретирует его как массив объектов. Это нарушает принцип наименьшего удивления .
– Vicky Chijwani
31 January 2018 в 15:48
>
указывает, что это строка. – Matt Williamson 28 September 2010 в 05:31{{- 'key'|trans -}}
тоже не работает. – Rvanlaak 6 May 2015 в 14:48