Una cita es "la repetición de una expresión como parte de otra". En inglés americano, una cita está entre comillas dobles ("), como en la oración anterior. Sin embargo, esta regla difiere cuando una cita aparece dentro de otra cita. En este caso, la cita interna está entre comillas simples (').
Desafío
Dada una cadena como entrada, genera una versión que se puede citar de esa cadena intercambiando comillas dobles y simples que se utilizan para las comillas internas.
Sin embargo, solo hay una trampa: ¡no todas las comillas simples se usan para las citas! Para este desafío, las comillas simples se usan para las citas si y solo si:
- La marca está precedida por un carácter no alfanumérico, o
- A la marca le sigue un carácter no alfanumérico que no es un espacio
Se garantiza que las marcas utilizadas para las citas están equilibradas; es decir, no necesita manejar entradas no válidas. Además, las comillas dobles solo se usarán en situaciones donde las comillas simples se pueden usar para representar las comillas.
Casos de prueba
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.'"
Puntuación
Este es el código de golf , por lo que gana la respuesta más corta en cada idioma.
fuente
... if' it" runs' deep"
tiene comillas simples que no van precedidas de un carácter no alfanumérico, ni están seguidas de "carácter no alfanumérico que no es un espacio", ¡pero se están transformando!"Nested, 'quotes, it's unfortunate', to be sure."
- Creo que necesitas un caso anidado con contracciones.Respuestas:
Ruby ,
64666564 + 1 =65676665 bytes+1 byte para la
-n
bandera.Pruébalo en línea!
fuente
Retina ,
3427 bytes-7 bytes gracias a @Leo
Pruébalo en línea!
fuente
@carusocomputing said, "Nested, 'quotes, it's unfortunate', to be sure."
como entrada, la siguiente comilla simpleunfortunate
no se cambia a una comilla doble, pero debería serlo. Si le ayuda a depurar, funciona cuando la coma aparece antes de la cotización. (No conozco Retina, así que realmente no puedo ayudar más)JavaScript (ES6), 90 bytes
Asume que la cadena no contiene
#
.Mostrar fragmento de código
fuente