Comment faire pour extraire la sous-chaîne dans Groovy?
J'ai un Groovy méthode qui fonctionne mais est réel laid/hacky recherche:
def parseId(String str) {
System.out.println("str: " + str)
int index = href.indexOf("repositoryId")
System.out.println("index: " + index)
int repoIndex = index + 13
System.out.println("repoIndex" + repoIndex)
String repoId = href.substring(repoIndex)
System.out.println("repoId is: " + repoId)
}
Lorsque cela fonctionne, vous pouvez obtenir une sortie comme:
str: wsodk3oke30d30kdl4kof94j93jr94f3kd03k043k?planKey=si23j383&repositoryId=31850514
index: 59
repoIndex: 72
repoId is: 31850514
Comme vous pouvez le voir, je suis tout simplement intéressés par l'obtention de la repositoryId
valeur (tout ce qui est après le =
opérateur) de la Chaîne. Est-il plus efficace/Groovier façon de le faire, c'est la seule façon?
Utiliser une expression régulière pour capturer le modèle que vous recherchez
OriginalL'auteur IAmYourFaja | 2014-07-31
Vous devez vous connecter pour publier un commentaire.
Il y a beaucoup de façons d'obtenir ce que vous voulez. Je vous suggère un simple à l'aide de
split
:êtes-vous l'exécutez à partir d'un script? essayez d'ajouter un
def
en face desub
.comment puis-je obtenir seulement le numéro suivant et pas de fuite après que? votre solution est le retour de tout ce qui suit le mot-clé. par exemple, j'ai de la Chaîne, "ID de la Demande pour le courant de récupérer tâche: 09Sg00000052eIJEAY [sf:récupérer] d'Attente pour le serveur pour terminer le traitement de la demande...". Je suis en train d'essayer d'obtenir que "09Sg00000052eIJEAY". Je sais que j'ai modifier l'index. Mais je ne peux pas comprendre jusqu'à présent
Je l'ai!!! def sub = { c'.split("actuel récupérer tâche: ")[1][0..18] } .... Upvoted la réponse 🙂
OriginalL'auteur Will
À l'aide d'une expression régulière que vous pourriez faire
La
=~
est une regex matcher=
est manquant 🙂OriginalL'auteur Jeff Storey
ou un raccourci regexp - si vous êtes à la recherche uniquement pour un seul match:
OriginalL'auteur injecteer