0
votes

Comment analyser avec élégance une chaîne pour avoir exactement ce dont vous avez besoin?

J'ai actuellement une clé de répertoire S3 Sucket comme celle-ci:

string dir = "S3: // myBucket / Flux de travail / science / douce-humoroor / vars";

Ce que j'essaie de faire est d'obtenir le préfixe de ce répertoire S3, un préfixe est en fait sans S3 :: // myBucket / , donc ce que je veux avoir est workflow / science / douce-humoroor / vars

Maintenant, quel serait un moyen élégant d'y parvenir? Je connais le moyen le plus rapide de faire est de faire un sous-chaîne (13) , mais cela se cassera chaque fois que le nom du godet change.

Comment géreriez-vous cela?


0 commentaires

6 Réponses :


0
votes

Vous pouvez essayer ceci:

string dir2 = dir.replaceall ("S3: //" + dir.split ("/") [2] + "/" "," ");


0 commentaires

1
votes

Utilisez une expression régulière avec de remplacement : xxx

la regex ici est: xxx

IT correspond La partie que vous souhaitez supprimer, ce qui est S3: // suivi d'une bande de caractères non coulissantes, suivi d'une barre oblique.


0 commentaires

-1
votes

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:]))


0 commentaires

1
votes

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 xxx

maintenant, vous avez un chemin (c'est-à-dire la partie "/ mybucket / science / science-humoroor / vars" partie) et vous pouvez obtenir le sous-path par xxx

Vous pouvez créer un fichier hors de ceci ( sous-path.tofile () ), ou simplement obtenir la chaîne de chemin d'accès par xxx


0 commentaires

0
votes
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

0 commentaires

0
votes

the uribuilder classe à partir du org.apache.http.client.utils Le paquet peut faire cela. XXX

Ceci Extrait automatiquement / Workflow / Science / Sweet-Humoor / Vars depuis le chemin. Le chemin récupéré n'inclut pas mybucket , car uribuilder voit la première partie immédiatement après le spécificateur de protocole ( S3: // ) comme Nom d'hôte .

Un traitement ultérieur peut être effectué via chemin p = paths.get (thePath) .


0 commentaires