.. highlightlang:: us .. index:: Dateneditor=>Kanalnamen filtern .. _browser-nc_name_filter: Dateneditor=>Kanalnamen filtern ------------------------------- Der Befehl ist über die rechte Maustaste im Dateneditor zu erreichen. .. image:: S:/uniplot-obj/images/nc_name_filter-de.* Mit diesem Befehl können Sie die Kanalnamen einer netCDF-Datei umbenennen. .. us.dialog .. us.dlgitem **Originalname** Der Name der Original-Datendatei. .. us.dlgitem **Kanalname** Die UniPlot-Kanalnamen in der netCDF-Datei. .. us.dlgitem **Gerätenamen anzeigen** Bei MDF-Dateien können die Kanalnamen die Form ``aaa.bbb\device`` haben. Wenn *Gerätenamen anzeigen* ausgeschaltet ist, werden die Zeichen ``\device`` entfernt. .. us.dlgitem **Erster Filter** Mit Hilfe des ersten Filters können Kanalnamen an einem Trennzeichen zerlegt werden. Aus den Namen können dann bestimmte Elemente am Anfang oder Ende entfernt werden. .. us.dlgitem **Ausführen** Der momentan eingestellte Filter wird ausgeführt und die neuen Kanalnamen werden in der Vorschau angezeigt. .. us.dlgitem **Weitere Filter** Wenn *Weitere Filter* eingeschaltet sind, können Sie in diesem Textfeld weitere Filter eingeben. Pro Zeile kann ein Filter der Form:: match filter-name parameter eingegeben werden. Mit dem Kommentar-Zeichen ``#`` können Filter ausgeblendet werden. match: Vor ``filter-name`` kann optional ein Suchmuster stehen, siehe :ref:`strmatch`. Dem Suchmuster muss zum Abschluß das Zeichen ``@`` folgen. Beispiele: .. code-block:: none es_* @ upper Alle Kanäle, die mit ``es_`` anfangen, in Großbuchstaben umwandeln. .. code-block:: none *_[1-3] @ lower Alle Kanäle, die mit ``_1``, ``_2`` oder ``_3`` enden in Kleinbuchstaben umwandeln. filter-name .. list-table:: :header-rows: 1 * - Name - Beschreibung * - separator - Zerlegt Kanalnamen die Trennzeichen enthalten, in Felder. ``separator`` hat drei Parameter: Trennzeichen, Anzahl (Zahl von 0 bis 9) und Aktion (eine der 4 Zeichenketten: ``hide from right``, ``show from right``, ``hide from left``, ``show from left``). .. code-block:: none separator . 1 show from right aaa.bbb => bbb a.b.c => c .. code-block:: none separator . 1 hide from right aaa.bbb => aaa a.b.c => a.b * - lower - Wandelt die Kanalnamen in Kleinbuchstaben um. * - upper - Wandelt die Kanalnamen in Großbuchstaben um. * - replace - Tauscht Zeichen oder Zeichenketten aus. Beispiele: .. code-block:: none replace . _ aaa.bbb => aaa_bbb TIME* @ replace TIME\_ Time TIME_1 => Time1 * - remove - Zeichen entfernen. Die Zeichen können an beliebigen Stellen entfernt werden, am Anfang (from left) oder am Ende (from right). Beispiel: .. code-block:: none remove $ $aaa.bbb => aaa.bbb remove .ext from right x122.ext => x122 remove mot_ from left mot_n => n .. us.dialog **Verwende neue Namen für die Attribute long_name und title** Wenn die Option markiert ist, wir der neu erzeugte Name auch für die Kanalattribute long_name und title verwendet. .. us.dlgitem .. us.example **Beispiel** Die folgende Funktion zeigt, wie man die Namensfilterung automatisieren kann. Die Funktion wird beim Zugriff auf NC-Dateien automatisch aufgerufen. Die Funktion prüft, ob die NC-Datei ein Attribute mit dem Namen "TestCell" enthält, welches den Text "Xp2" enthält. Zusätzlich wird geprüft, ob die Datei vom ODS5 Importfilter erzeugt wurde. Der Namensfilter entfernt die Zeichenfolge "Ext" aus dem Kanalnamen, wenn die Zeichenfolge am Ende des Namens auftritt. Die Funktion ``nc_name_filter`` führt die eigentliche Namesänderung durch. Der erste Funktionsparameter ist ein Vektor mit allen Kanalnamen. Der zweite Parameter enthält den Filterstring:: def OnImportUpdateNCFile(ssNCName) { ncid = nc_open(ssNCName, NC_WRITE); if (ncid == -1) { return FALSE; } if (nc_attinq_datatype(ncid, -1, "TestCell") != NC_CHAR) { nc_close(ncid); return TRUE; } ssAtt = nc_attget(ncid, -1, "TestCell"); if (strfind(ssAtt, "Xp2")[1] == 0) { nc_close(ncid); return TRUE; } if (nc_attinq_datatype(ncid, -1, "Creator") != NC_CHAR) { nc_close(ncid); return TRUE; } ssAtt = nc_attget(ncid, -1, "Creator"); if (strfind(ssAtt, "ODS51")[1] == 0) { nc_close(ncid); return TRUE; } if (_nc_need_org_name(ncid)) { _nc_write_org_names(ncid); } sv = NC_GetOrgNames(ncid); // remove the string "Mit" from the string end. sv = nc_name_filter(sv, "remove Ext from right"); _nc_rename_all(ncid, sv, TRUE); nc_close(ncid); return sv; } .. us.comment **Kommentar** Sie können eigene Filterfunktionen zufügen. Siehe Datei :file:`nc_name_filter.ic`. .. seealso:: :ref:`dateneditor`, :ref:`der-dateneditor` :sub:`id-781728`