Uma citação é "a repetição de uma expressão como parte de outra". No inglês americano, as aspas são cercadas por aspas duplas ("), como na frase anterior. No entanto, essa regra difere quando uma aspas aparece dentro de outra aspas. Nesse caso, a aspas internas é cercada por aspas simples (')
Desafio
Dada uma sequência como entrada, produza uma versão cotável dessa sequência trocando aspas duplas e simples que são usadas para aspas internas.
Porém, existe apenas uma captura - nem todas as aspas simples são usadas para cotação! Para esse desafio, aspa simples são usadas para cotação se e somente se:
- A marca é precedida por um caractere não alfanumérico ou
- A marca é seguida por um caractere não alfanumérico que não é um espaço
As marcas usadas nas cotações são garantidas como equilibradas; isto é, você não precisa manipular entrada inválida. Além disso, aspas duplas serão usadas apenas em situações em que aspas simples podem ser usadas para representar aspas.
Casos de teste
A man, a plan, a canal, Panama.
"A man, a plan, a canal, Panama."
Socrates once said, "An unexamined life is not worth living."
"Socrates once said, 'An unexamined life is not worth living.'"
@musicman523 said, "Socrates once said, 'An unexamined life is not worth living.'"
"@musicman523 said, 'Socrates once said, "An unexamined life is not worth living."'"
"Nested 'quotes "can 'cause "recursion," if,' it," runs,' deep!"
"'Nested "quotes 'can "cause 'recursion,' if," it,' runs," deep!'"
"Contractions' behaviors can't be easy to account for," he warned.
"'Contractions' behaviors can't be easy to account for,' he warned."
@carusocomputing said, "Nested, 'quotes, it's unfortunate', to be sure."
"@carusocomputing said, 'Nested, "quotes, it's unfortunate", to be sure.'"
Pontuação
Isso é código-golfe , então a resposta mais curta em cada idioma vence!
fonte
... if' it" runs' deep"
possui aspas simples que não são precedidas por um não alfanumérico, nem são seguidas por "caracteres não alfanuméricos que não são um espaço" e, no entanto, estão sendo transformados!"Nested, 'quotes, it's unfortunate', to be sure."
Acho que você precisa de um caso aninhado com contrações.Respostas:
Ruby ,
64666564 + 1 =65676665 bytes+1 byte para o
-n
sinalizador.Experimente online!
fonte
Retina ,
3427 bytes-7 bytes graças a @Leo
Experimente online!
fonte
@carusocomputing said, "Nested, 'quotes, it's unfortunate', to be sure."
como entrada, o seguinte aspas simplesunfortunate
não é alterado para aspas duplas, mas deve ser. Se ele ajudar na depuração, funcionará quando a vírgula chegar antes da cotação. (Eu não sei Retina, então não posso realmente ajudar ainda mais.)JavaScript (ES6), 90 bytes
Assume que a sequência não contém
#
.Mostrar snippet de código
fonte