Citez ma citation!

13

Une citation est "la répétition d'une expression comme faisant partie d'une autre". En anglais américain, une citation est entourée de guillemets doubles ("), comme dans la phrase précédente. Cependant, cette règle diffère lorsqu'une citation apparaît à l'intérieur d'une autre citation. Dans ce cas, la citation intérieure est entourée de guillemets simples (').

Défi

Étant donné une chaîne en entrée, affichez une version quotable de cette chaîne en échangeant des guillemets doubles et simples qui sont utilisés pour les guillemets internes.

Il n'y a qu'un seul hic, cependant - tous les guillemets simples ne sont pas utilisés pour la citation! Pour ce défi, le guillemet simple est utilisé pour les devis si et seulement si:

  • La marque est précédée d'un caractère non alphanumérique, ou
  • La marque est suivie d'un caractère non alphanumérique qui n'est pas un espace

Les notes utilisées pour les devis sont garanties d'être équilibrées; c'est-à-dire que vous n'avez pas besoin de gérer une entrée non valide. En outre, les guillemets doubles ne seront utilisés que dans les situations où des guillemets simples peuvent être utilisés pour représenter les guillemets.

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

Notation

C'est le , donc la réponse la plus courte dans chaque langue gagne!

musicman523
la source
Sandbox
musicman523
2
... if' it" runs' deep"a des guillemets simples qui ne sont pas précédés d'un caractère non alphanumérique, ni suivis de "caractère non alphanumérique qui n'est pas un espace", et pourtant ils sont transformés!
Value Ink
1
Personnellement, je ne pense pas que la manipulation des apostrophes ajoute beaucoup de valeur au défi.
ATaco
1
@JonathanAllan Oui. Je pense qu'il est difficile de déterminer si ces guillemets simples sont utilisés pour la citation ou la possession sans compliquer profondément les règles. Je pense que cela constituerait à lui seul un défi décent.
musicman523
1
"Nested, 'quotes, it's unfortunate', to be sure."- Je pense que vous avez besoin d'un cas emboîté avec des contractions.
Magic Octopus Urn

Réponses:

2

Ruby , 64 66 65 64 + 1 = 65 67 66 65 octets

+1 octet pour le -ndrapeau.

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

Essayez-le en ligne!

Encre de valeur
la source
Ne semble pas faire la bonne chose pour les guillemets simples précédés d'un espace (qui sont en effet utilisés pour les guillemets)
musicman523
@ musicman523 merci, fixe!
Value Ink
2

Rétine , 34 27 octets

-7 octets grâce à @Leo

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

Essayez-le en ligne!

ovs
la source
Avec @carusocomputing said, "Nested, 'quotes, it's unfortunate', to be sure."comme entrée, le guillemet simple suivant unfortunaten'est pas changé en guillemet double, mais devrait l'être. Si cela vous aide à déboguer, cela fonctionne lorsque la virgule précède le devis. (Je ne connais pas Retina donc je ne peux pas vraiment aider davantage.)
musicman523
@ musicman523 l'a corrigé
ovs
Vous pouvez utiliser \ w directement dans votre classe de personnage
Leo
0

JavaScript (ES6), 90 octets

Suppose que la chaîne ne contient pas #.

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

darrylyeo
la source