Ich führe einen Ghost Blog und ich möchte alle meine einfachen und doppelten Anführungszeichen in "curly quotes" finden und ersetzen (siehe here), aber ich kenne SQLite nicht sehr gut. Bisher habe ich mit diesem kommen:SQLite Ersetzen Sie gerade Zitate mit Curly Quotes
update posts set markdown = replace(markdown, '""', '“');
Der obige Befehl an alle meine doppelte Anführungszeichen ersetzt typografische Anführungszeichen zu öffnen (ALT + 0147). Dann habe ich versucht, den gleichen Befehl ausgeführt wird, jedoch unter Ersatz für den Schlusskurs (ALT + 0148), etwa so:
update posts set markdown = replace(markdown, '“', '”');
, die im Grunde alle geschweifte Anführungszeichen mit Schließung Anführungszeichen ersetzt. Und da stecke ich fest. Ich bin nicht sicher, wie man in sqlite eine Ausnahme macht, so dass es nur die Anführungszeichen ersetzt, die Text nach ihnen haben. Außerdem habe ich keine Fälle berücksichtigt, in denen meine direkten Zitate unverändert bleiben sollen, wie in den HTML-Links, wie in den Kommentaren erwähnt.
Update: It Works
Dank einer Antwort, ich habe eine Lösung, die in meinem Fall gefunden perfekt gearbeitet hat! Beachten Sie, dass ich den DB Browser für SQLite verwendet, um meine Datenbank Änderungen an -
update posts set markdown = replace(markdown, ' "', ' “');
update posts set markdown = replace(markdown, '." ', '.” ');
update posts set markdown = replace(markdown, '" ', '” ');
Die beiden oben genannten Befehle ersetzt haben alle Öffnen doppelte Anführungszeichen mit typografische Anführungszeichen und das gleiche gilt für die Schließung Anführungszeichen. Alles, was jetzt noch zu tun ist, ist, wie in der Antwort unten angegeben, alle Möglichkeiten zu umfassen, wo solche Zitate erscheinen können. Das Gleiche gilt für die einfachen Anführungszeichen, wie so:
update posts set markdown = replace(markdown, ' ''', ' ‘');
update posts set markdown = replace(markdown, '.'' ', '.’ ');
update posts set markdown = replace(markdown, ''' ', '’ ');
Und für all dazwischen Apostrophe:
update posts set markdown = replace(markdown, '''', '’');
Bitte geben Sie eine [mcve], d. H. Eine ".dump" einer angemessen zugeschnittenen Spielzeug-Datenbank. – Yunnosch
Stellen Sie sicher, dass Sie eine Beispieleingabe haben, die alle Fälle abdeckt, die Sie behandeln möchten. Z.B. string beginnt und endet mit Anführungszeichen, string enthält ein zitiertes Wort in der Mitte. String beginnt mit einem zitierten Wort und wird dann fortgesetzt. Beginnt ohne Anführungszeichen und endet mit Anführungszeichen. Kombinationen von oben mit zwei zitierten Teilen. Zitate Teile mit Leerzeichen .... – Yunnosch
Hallo @Yunnosch Ich habe einen Beitrag aus dem Blog als .SQL exportiert und hochgeladen https://pastebin.com/E1f9waZh Übrigens verwende ich den "DB Browser for SQLite "Programm, um Änderungen an meinen Datenbanken vorzunehmen. Ich habe es von dort exportiert. – Nick