2017-04-10 2 views
0

In Talend Open Studio, wenn ich eine Kontextvariable habe, die auf ein Verzeichnis zeigt C:/MyData Wie kann ich das von einer Verzeichniszeichenfolge z. C:/MyData/Folder/Sub/ so, dass ich mit /Folder/Sub/ zur weiteren VerarbeitungSo subtrahieren oder entfernen Sie den Inhalt einer Kontextvariablen aus einer Zeichenkette in Talend

ich die C:/MyData/Folder/Sub/ in einer Variablen Path Speicherung versucht, am Ende und den Kontext wie als String in tMap Var.Path.replace(Var.ContextAsString, "") verwenden, sondern dass die Ausgabe an allen

haben dort nicht beeinflussen, sind bessere Methoden zum Bearbeiten von Zeichenfolgen, die Verzeichnispfade mit Talend tMap darstellen?

Antwort

1

Keine Notwendigkeit, eine tMap-Variable zu deklarieren. Angenommen, das Feld mit dem vollständigen Pfad lautet "row1.fullpath" und die Kontextvariable heißt root (mit "D:/MyData"). Auf dem rechten Teil des tMap, schreiben Sie einfach:

row1.fullpath.replace(context.root, "")
+0

Ich habe versucht, dass früher, aber nicht über die Daten als Felder so sie als Variablen deklarieren, aber Sie haben mir die Werte machen erneut testen und bemerkte, war ich Suche nach C:/MyData von einem Verzeichnispfad, der C: \ MyData \ Folder \ Sub war, so dass es nie übereinstimmen würde (Schrägstrich ist anders), aber ich konnte den Kontext Directory-Wert ändern, ohne die Ausführung des Jobs zu beeinträchtigen Var.Path.Replace hat funktioniert – mobcdi

1

Sie können auf das Beispiel unten verweisen und es zu tMap expression portieren.

String s1 = "C:/MyData"; 
String s2 = "C:/MyData/Folder/Sub/"; 
String s3 = (s2.indexOf(s1) >= 0) ? s2.substring(s2.indexOf(s1) + s1.length()): s2; 
System.out.println(s3); 
Verwandte Themen