Ich möchte eine Nummer durch aufeinanderfolgende Nummern ersetzen, beginnend mit 1 und aufsteigend

1818

Ich bin mir bewusst, dass die Leute dies leicht programmieren können, aber ich bin mit diesen Dingen nicht vertraut, also hoffte ich, dass es eine einfachere Lösung gibt.

Ich habe eine umfangreiche Datenbank mit Fragen bearbeitet, einschließlich der Sortierung, und am Ende habe ich alle Fragen-IDs gemischt.

Ich versuche dies in Notepad ++, aber andere Vorschläge sind willkommen. Ich frage mich, ob es eine Möglichkeit gibt, nach einer Zeichenfolge zu suchen (z. B. "Frage [beliebige Nummer]") und die Zahlen durch zuerst 1, dann 2 usw. zu ersetzen.

Zur Verdeutlichung sieht eine Frage so aus:

TriviaBot_Questions[3]['Question'][63] = "Acronyms: What does WTT stand for?";  TriviaBot_Questions[3]['Answers'][63] = {"Want To Trade"};  TriviaBot_Questions[3]['Category'][63] = 7;  TriviaBot_Questions[3]['Points'][63] = 1; TriviaBot_Questions[3]['Hints'][63] = {};  

und die nächste Frage, wie sie jetzt ist, wird nicht von 64 gefolgt. Es könnte 245 oder 1029 sein, und unabhängig davon, um welche Nummer es sich handelt, ich möchte, dass es durch "vorherige Nummer + 1" ersetzt wird.

0

2 Antworten auf die Frage

1
Tikhon Jelvis

Nun, mit Emacs ist das einfach genug, aber Emacs können schwer zu lernen sein.

Sie können es hier erhalten: http://www.gnu.org/software/emacs/ . Es ist völlig kostenlos.

Machen Sie eine Sicherungskopie der Datei, bevor Sie fortfahren, nur für den Fall, dass es ärgerlich sein kann, alles rückgängig zu machen, und es schadet nie, eine Sicherungskopie zu haben.

So machen Sie, was Sie wollen, Tastendruck durch Tastendruck. Als Referenz bedeutet C Kontrolle und ein Strich bedeutet, dass er gleichzeitig gedrückt werden muss (z. B. Control + x), während ein Leerzeichen bedeutet, dass Sie das, was Sie zuvor hatten, loslassen. Cx Cf bedeutet also, Sie drücken Strg + x und dann Strg + f.

Öffne Emacs und öffne die Datei, die du hast. Wenn keine Datei / Bearbeitungsleiste usw. vorhanden ist, können Sie eine Datei mit Cx Cf (Control + x gefolgt von Control + F) öffnen und den Dateipfad eingeben.

Drücken Sie dann Cx (Steuerelement + x, gefolgt von Umschalttaste + 9). Dies startet die Aufnahme Ihrer Tastatureingaben, die Sie später wiederholen können.

Drücken Sie nun Cs und geben Sie "Questions" ein, gefolgt von Cf zweimal und C-Rücktaste. Drücken Sie jetzt f3. Die Nummer sollte durch eine 0 ersetzt werden. Wenn mehrere Zeilen die gleiche Nummer haben sollen, kopieren Sie die soeben mit C-Leerzeichen gefolgt von Cb und dann Mw (Alt + W).

Mit der kopierten Nummer können Sie Cs erneut verwenden, indem Sie zweimal darauf drücken, um zur nächsten Instanz von "Fragen" zu gelangen. Drücken Sie hier zweimal Cf gefolgt von C-Rücktaste. Geben Sie nun Cy ein, um die kopierte Zahl einzufügen. Wiederholen Sie diesen Vorgang nach Bedarf, um alle Zahlen in einer Frage durchzugehen. Geben Sie nach jeder Wiederholung dieser Aktion in dieser einzelnen Frage My ein.

Wenn Sie mit der ersten Frage fertig sind und alle Zahlen durch 0 ersetzt sind, können Sie das Aufzeichnen des Makros jetzt beenden. Geben Sie Cx ein (Control-x gefolgt von Shift-0 wie zuvor).

Wenn Sie zu irgendeinem Zeitpunkt einen Fehler machen und abbrechen und neu starten, wird Cg abgebrochen und C-_ (Strg + Umschalt + -) rückgängig gemacht.

Geben Sie nun Cu 0 Cx e ein.

Wenn es funktioniert, können Sie die Änderungen speichern, indem Sie Cx Cs eingeben.

Sie erstellen ein Tastaturmakro, um die Zahl zu ersetzen. Führen Sie sie wiederholt mit einem (durch f3 erstellten) Zähler aus, der jedes Mal erhöht wird.

Wenn Sie es schaffen, diese Arbeit zu machen (ich habe es an Ihrem Beispiel getan), sollten Sie überlegen, wie Sie Emacs verwenden können. Es gibt ein sehr schönes Tutorial, auf das Sie zugreifen können, wenn Sie Emacs öffnen. Das Lernen erfordert etwas Mühe, aber es lohnt sich.

0
ta.speot.is

Mir ist kein Werkzeug bekannt, das dies kann, aber es ist vielleicht besser, wenn Sie Ihren Code so schreiben

x = 0; Questions[3][++x] = 'New Question'; Questions[3][ x] = '------------'; Questions[3][ x] = 'A: Answer, B: Answer, C: Answer'; Questions[3][++x] = 'New Question'; Questions[3][ x] = '------------'; Questions[3][ x] = 'A: Answer, B: Answer, C: Answer'; 

Oder eine bessere Lösung wäre, aus einer Textdatei oder Datenbank zu lesen, sodass die Fragen nicht an die kompilierte Anwendung gebunden sind.

Wenn Sie das unmittelbare Problem lösen möchten, würde ich die Fragendatei in Excel einfügen und Text-> Spalten mit den Zeichen [und ]als Trennzeichen ausführen. Dann sortieren.

Das Problem besteht nicht darin, sie zu sortieren. Ich habe sie in Kategorien umgestellt, weshalb die Frage-IDs nicht in Ordnung sind. Die aktuelle Reihenfolge ist korrekt, ich möchte nur die Zahlen ändern. vor 13 Jahren 0
@Ciremo, dann in Excel importieren und Text-> Spalten ausführen. Setzen Sie eine Spalte mit den Nummern 1 bis x, um die Zeilennummern zu identifizieren (ich gehe davon aus, dass es sich um Spalte Z handelt). Schreiben Sie dann ein Makro für die IDs, z. B. = 5 * INT (Z1 / 5) für die ID-Spalte, die Sie ersetzen möchten. Ziehen Sie es nach unten. ta.speot.is vor 13 Jahren 2
Was auch einfacher sein könnte, ist 1, 1, 1, 1, 1, 2, 2, 2, 2, 2 in der Liste nach unten zu ziehen und dann als Bereich zu ziehen. Excel sollte daraus schließen, dass Sie alle 5 Schritte um 1 erhöhen möchten. ta.speot.is vor 13 Jahren 0