Betreff: Wie kann ich feststellen, ob eine Zeichenfolge doppelte Zeichen enthält, und diese extrahieren?Hier ist eine Möglichkeit, Duplikate loszuwerden
theList = Words( "abp-g5.GAIV_0099_P013_GAIV_0099_P013", "_." );
For( i = N Items( theList ), i >= 1, i--,
If( N Rows( Loc( theList, theList[i] ) ) > 1,
Remove From( theList, i, 1 )
)
);
newName = theList[1] || "." || theList[2];
For( i = 3, i <= N Items( theList ), i++,
newName = newName || "_" || theList[i]
);
Betreff: Wie kann ich feststellen, ob eine Zeichenfolge doppelte Zeichen enthält, und diese extrahieren?Ein paar Fragen:
- Was ist für Sie ein „Wort“? Gibt es etwas, das durch „_“ und „.“ getrennt ist?
- Was tun, wenn es mehrere Duplikate gibt? Werden alle extrahiert/nur die kürzesten/nur die längsten/keine?
- Kann die Duplizierung an jeder Stelle in der Zeichenfolge erfolgen? Befindet sich der duplizierte Teil immer am Ende?
Betreff: Wie kann ich feststellen, ob eine Zeichenfolge doppelte Zeichen enthält, und diese extrahieren?Vielen Dank, Ihre Methode ist sehr gut!
Betreff: Wie kann ich feststellen, ob eine Zeichenfolge doppelte Zeichen enthält, und diese extrahieren?Vielen Dank, das ist in der Tat ein praktisches Problem::
Wenn dieses Zeichen einen GAI enthält, extrahieren Sie eines der damit beginnenden Zeichen, wann immer es wiederholt vorkommt, unabhängig davon, wie oft es vorkommt.
Und es wird auf jeden Fall Duplikate geben.
Betreff: Wie kann ich feststellen, ob eine Zeichenfolge doppelte Zeichen enthält, und diese extrahieren?Das ist eine interessante Frage. Ich mag @txnelson 's Lösung. Zusätzlich zu seinem Ansatz ist dies eine Situation, in der reguläre Ausdrücke nützlich sein können. Hier ist also eine andere Möglichkeit, dies zu tun.
Die beiden bereitgestellten Beispiele weisen die folgenden Muster auf:
- Es kann ein Präfix vorhanden sein, zum Beispiel „abp-g5“.
- die gewünschte Zeichenfolge/Zeichen folgen dem Präfix
- Die wiederholten/duplizierten Zeichen stimmen genau mit der gewünschten Zeichenfolge/den gewünschten Zeichen überein
- Die wiederholten/doppelten Zeichen werden durch einen Unterstrich von den gewünschten Zeichen getrennt
- Es gibt nichts anderes als doppelte Zeichen am Ende der Zeichenfolge
- Es ist mindestens eine wiederholte/doppelte Zeichenfolge/Zeichen vorhanden
Unter der Annahme, dass diese Regeln die Spaltennamen, die geändert werden müssen, genau definieren, aktualisiert der folgende Code alle Spaltennamen in der „aktuellen Datentabelle“, die den oben genannten Annahmen entsprechen. Die Spaltennamen, die nicht mit den Annahmen übereinstimmen, werden nicht geändert.
names default to here(1);
dt = current data table();
for( k = 1, k <= n cols(dt), k++,
colName = column(dt, k) << get name();
colName = regex( colName, "^.*?(.+)(?:_\1)+$", "\1" );
try( column(dt, k) << set name( colName ) );
);
Wie kann man feststellen, ob eine Zeichenfolge doppelte Zeichen enthält, und diese extrahieren?Ich habe jetzt eine Tabelle mit über 1000 Spalten und die meisten Spaltennamen enthalten doppelte Wörter, die extrahiert werden müssen. Bitte fragen Sie die Großen: Wie erreicht man das mit JSL?
Zum Beispiel:
Spaltenname ist abp-g5.GAIV_0099_P013_GAIV_0099_P013, dann extrahieren Sie GAIV_0099_P013;
Der Spaltenname lautet abp-g5.GAI1997_GAI1997, dann extrahieren Sie GAI1997
Automatisierung und SkripterstellungMac OSMassenanpassung