Cita la mia citazione!


13

Una citazione è "la ripetizione di un'espressione come parte di un'altra". In inglese americano, una citazione è racchiusa tra virgolette ("), come nella frase precedente. Tuttavia, questa regola differisce quando una citazione appare all'interno di un'altra citazione. In questo caso, la citazione interna è circondata da virgolette singole ( ').

Sfida

Data una stringa come input, genera una versione quotabile di quella stringa scambiando virgolette doppie e singole utilizzate per le quotazioni interne.

Tuttavia, c'è solo un problema: non tutte le virgolette singole vengono utilizzate per le virgolette! Per questa sfida, le virgolette singole vengono utilizzate per le virgolette se e solo se:

  • Il segno è preceduto da un carattere non alfanumerico, o
  • Il segno è seguito da un carattere non alfanumerico che non è uno spazio

I marchi utilizzati per le quotazioni sono garantiti per essere bilanciati; cioè, non è necessario gestire input non validi. Inoltre, le virgolette doppie verranno utilizzate solo in situazioni in cui le virgolette singole possono essere utilizzate per rappresentare le virgolette.

Casi test

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.'"

punteggio

Questo è , quindi vince la risposta più breve in ogni lingua!



2
... if' it" runs' deep"ha virgolette singole che non sono precedute da un carattere non alfanumerico, né sono seguite da "carattere non alfanumerico che non è uno spazio", eppure vengono trasformate!
Value Ink

1
Personalmente non credo che la gestione degli apostrofi aggiunga molto valore alla sfida.
ATaco,

1
@JonathanAllan Sì. Penso che sia difficile determinare se quelle virgolette singole vengano utilizzate per la citazione o il possesso senza complicare profondamente le regole. Penso che sarebbe una sfida decente da solo.
musicman523

1
"Nested, 'quotes, it's unfortunate', to be sure."- Penso che tu abbia bisogno di un caso nidificato con contrazioni.
Magic Octopus Urn,

Risposte:


2

Rubino , 64 66 65 64 + 1 = 65 67 66 65 byte

+1 byte per la -nbandiera.

gsub(/"|(?<!\w)'|'(?!\w|\s)/){"'\""["\"'".index$&]}
$><<?"+$_+?"

Provalo online!


Non sembra fare la cosa giusta per le virgolette singole precedute da uno spazio (che sono effettivamente utilizzate per le virgolette)
musicman523

@ musicman523 grazie, risolto!
Value Ink

2

Retina , 34 27 byte

-7 byte grazie a @Leo

T`'"`"'`\W'|"|'[^\w ]
^|$
"

Provalo online!


Con @carusocomputing said, "Nested, 'quotes, it's unfortunate', to be sure."come input, la seguente virgoletta unfortunatenon viene modificata in virgoletta doppia, ma dovrebbe essere. Se ti aiuta a eseguire il debug, funziona quando la virgola precede la citazione. (Non conosco Retina, quindi non posso davvero aiutare ulteriormente.)
musicman523

@ musicman523 riparato
ovs

Puoi usare \ w direttamente nella tua classe di personaggi
Leone,

0

JavaScript (ES6), 90 byte

Presuppone che la stringa non contenga #.

s=>'"'+s[r='replace'](/"/g,'#')[r](/(\W)'/g,'$1"')[r](/'([^\w ])/g,'"$1')[r](/#/g,"'")+'"'

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.