Trích dẫn trích dẫn của tôi!


13

Một trích dẫn là "sự lặp lại của một biểu thức như là một phần của một biểu thức khác". Trong tiếng Anh Mỹ, một trích dẫn được bao quanh bởi dấu ngoặc kép ("), như trong câu trước. Tuy nhiên, quy tắc này khác khi trích dẫn xuất hiện bên trong một trích dẫn khác. Trong trường hợp này, trích dẫn bên trong được bao quanh bởi dấu ngoặc kép đơn. (').

Thử thách

Đưa ra một chuỗi làm đầu vào, xuất ra một phiên bản có thể trích dẫn của chuỗi đó bằng cách trao đổi các dấu ngoặc kép và dấu ngoặc đơn được sử dụng cho trích dẫn bên trong.

Tuy nhiên, chỉ có một nhược điểm - không phải tất cả các dấu ngoặc đơn đều được sử dụng để trích dẫn! Đối với thử thách này, dấu ngoặc đơn được sử dụng để trích dẫn khi và chỉ khi:

  • Dấu được đi trước bởi một ký tự không phải là chữ và số, hoặc
  • Dấu được theo sau bởi một ký tự không chữ và số không phải là khoảng trắng

Các nhãn hiệu được sử dụng để trích dẫn được đảm bảo được cân bằng; đó là bạn không cần xử lý dữ liệu nhập không hợp lệ. Ngoài ra, dấu ngoặc kép sẽ chỉ được sử dụng trong các tình huống có thể sử dụng dấu ngoặc kép đơn để thể hiện dấu ngoặc kép.

Các trường hợp thử nghiệm

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

Chấm điểm

Đây là , vì vậy câu trả lời ngắn nhất trong mỗi ngôn ngữ sẽ thắng!



2
... if' it" runs' deep"có các dấu ngoặc đơn không được đặt trước bởi một chữ cái không chữ và số, chúng cũng không được theo sau bởi "ký tự không chữ và số không phải là khoảng trắng", và chúng vẫn được chuyển đổi!
Mực giá trị

1
Cá nhân tôi không cảm thấy rằng việc xử lý dấu nháy đơn làm tăng thêm giá trị cho thử thách.
ATaco

1
@Jonathan Allan Có. Tôi nghĩ thật khó để xác định liệu các dấu ngoặc kép đơn đó được sử dụng để trích dẫn hay sở hữu mà không làm phức tạp sâu sắc các quy tắc. Tôi nghĩ rằng nó sẽ làm cho một thách thức tốt trên chính nó.
sĩ523

1
"Nested, 'quotes, it's unfortunate', to be sure."- Tôi nghĩ rằng bạn cần một trường hợp lồng nhau với các cơn co thắt.
Bạch tuộc ma thuật Urn

Câu trả lời:



2

Võng mạc , 34 27 byte

-7 byte nhờ @Leo

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

Hãy thử trực tuyến!


Với @carusocomputing said, "Nested, 'quotes, it's unfortunate', to be sure."tư cách là đầu vào, trích dẫn đơn sau đây unfortunatekhông được thay đổi thành trích dẫn kép, nhưng nên được. Nếu nó giúp bạn gỡ lỗi, nó hoạt động khi dấu phẩy xuất hiện trước dấu ngoặc kép. (Tôi không biết Retina vì vậy tôi thực sự không thể giúp gì thêm.)
sĩ523

@ musicman523 đã sửa nó
ovs

Bạn có thể sử dụng \ w trực tiếp bên trong lớp nhân vật của mình
Leo

0

JavaScript (ES6), 90 byte

Giả sử chuỗi không chứa #.

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.