J'ai actuellement une clé de répertoire S3 Sucket comme celle-ci: p>
Ce que j'essaie de faire est d'obtenir le préfixe de ce répertoire S3, un préfixe est en fait sans Maintenant, quel serait un moyen élégant d'y parvenir? Je connais le moyen le plus rapide de faire est de faire un Comment géreriez-vous cela? P> string dir = "S3: // myBucket / Flux de travail / science / douce-humoroor / vars"; code> p> P>
S3 :: // myBucket / code>, donc ce que je veux avoir est workflow / science / douce-humoroor / vars code> p>
sous-chaîne (13) code>, mais cela se cassera chaque fois que le nom du godet change. p>
6 Réponses :
Vous pouvez essayer ceci: p>
string dir2 = dir.replaceall ("S3: //" + dir.split ("/") [2] + "/" "," "); P> P>
Utilisez une expression régulière avec la regex ici est: p> IT correspond La partie que vous souhaitez supprimer, ce qui est de remplacement code>: S3: // code> suivi d'une bande de caractères non coulissantes, suivi d'une barre oblique. p> p>
Je diviserais la chaîne par "/" et obtenez les valeurs de troisième index et joignez-la avec "/". Exemple de code en python.
input_string = "s3://mybucket/workflow/science/sweet-humoor/vars"
list1 = (input_string.split("/"))
print(list1)
print("/".join(list1[3:]))
Il est propre d'utiliser la bibliothèque Java Fonctions pour les chemins au lieu de gérer directement les chaînes. Ce que vous avez est une URL, donc maintenant, vous avez un chemin Vous pouvez créer un fichier code> (c'est-à-dire la partie "/ mybucket / science / science-humoroor / vars" partie) et vous pouvez obtenir le sous-path par p> code> hors de ceci ( sous-path.tofile () code >), ou simplement obtenir la chaîne de chemin d'accès par p>
String dir = "s3://mybucket/workflow/science/sweet-humoor/vars";
dir = dir.replace("//", "").substring( dir.indexOf("/") );
System.err.println(dir); // prints mybucket/workflow/science/sweet-humoor/vars
the Ceci Extrait automatiquement Un traitement ultérieur peut être effectué via uribuilder code> classe à partir du org.apache.http.client.utils code> Le paquet peut faire cela. / Workflow / Science / Sweet-Humoor / Vars Code> depuis le chemin. Le chemin récupéré n'inclut pas mybucket code>, car uribuilder code> voit la première partie immédiatement après le spécificateur de protocole ( S3: // code>) comme Nom d'hôte em>. p> chemin p = paths.get (thePath) code>. p> p>