Extrahiert numerische Daten aus string in groovy
Ich bin da ein string, der text und numerische Daten:
Beispiele:
"100 Pfund"
"Ich denke, 173 lbs"
"73 lbs."
Ich bin auf der Suche für eine saubere Art und Weise zu extrahieren nur die numerischen Daten aus diesen strings.
Hier ist, was ich bin derzeit dabei Streifen die Antwort:
def stripResponse(String response) {
if(response) {
def toRemove = ["lbs.", "lbs", "pounds.", "pounds", " "]
def toMod = response
for(remove in toRemove) {
toMod = toMod?.replaceAll(remove, "")
}
return toMod
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie
findAll
dann konvertieren Sie das Ergebnis in ganzen zahlen:Wenn Sie brauchen, Dezimalzahlen und negativen zahlen, könnten Sie mit einem komplexeren regex:
def extractNumericData(String response) { if(response) { def numberList = response.findAll( /[0-9]+.[0-9]*|[0-9]*.[0-9]+|[0-9]+/ ) if(numberList.size() == 1) { return numberList.get(0) as BigDecimal } else { return -1 } } }
java.lang.UnsupportedOperationException: spread not yet supported in input.findAll(\d+)*.toInteger()
. ---- Und heißt es auf Jenkins Ihr gelöst.Setze dieses hier für Menschen, die brauchen das.
Anstatt neue Frage, alles, was ich brauchte, war eine Zahl aus einem string.
Habe ich das mit regex.
Wo der Eingang sein könnte
this.may.have.number4.com
und zurück4
War ich Fehlermeldungen von oben beantworten (wahrscheinlich aufgrund meiner Jenkins-version) - Für einige Grund, warum ich dieses:
java.lang.UnsupportedOperationException: spread not yet supported in input.findAll(\d+)*.toInteger()
---- Und es sagt auf Jenkins seine gelöst.Hoffe, das hilft.
Nach dem hinzufügen der folgenden Methode
numbersFilter
über Metaklasse , Sie können es nennen, wie folgt :Fügen Sie diesen code Wie BootStrap