Groovy GDK -Äquivalent von Apache Commons Stringutils.capitalize (STR) oder Perls UCFirst (STR)

StackOverflow https://stackoverflow.com/questions/681807

  •  22-08-2019
  •  | 
  •  

Frage

JA/NO-Frage: Gibt es eine groovige GDK-Funktion, um das erste Zeichen einer Zeichenfolge zu profitieren?

Ich suche ein grooviges Äquivalent von Perls UCFirst (..) oder Apache Commons Stringutils.capitalize (STR) (Letzterer greift den ersten Buchstaben aller Wörter in der Eingabezeichenfolge an).

Ich kodiere das gerade von Hand mit ..

str = str[0].toUpperCase() + str[1 .. str.size() - 1]

.. was funktioniert, aber ich gehe davon aus, dass es eine groovigere Möglichkeit gibt, es zu tun. Ich würde mir vorstellen, dass Ucfirst (..) eine häufigere Operation ist als das Zentrum (..), eine Standardmethode im Groovy GDK (siehe http://groovy.codeehaus.org/groovy-jdk/java/lang/string.html).

War es hilfreich?

Lösung

Nein, nichts direkt in die Sprache aufgebaut.

Es gibt jedoch ein paar groovige Möglichkeiten, das zu tun, was Sie fragen (wenn Sie Stringutils nicht auf die idiomatische Java -Art und Weise verwenden möchten, wie Vladimir vorschlägt).

Sie können Ihre Methode mit einem negativen Wert in der zweiten Hälfte Ihres Bereichs vereinfachen:

def str = "foo"

assert "Foo" == str[0].toUpperCase() + str[1..-1]

Oder Sie können einen Import -Statik verwenden, um ihn wie eine native Methode aussehen zu lassen:

import static org.apache.commons.lang.StringUtils.*

assert "Foo" == capitalize("foo")

Sie können auch die Metaklas so ändern, dass alle StringUtils -Methoden direkt darauf enthalten sind. Daher sieht es wie eine GDK -Methode aus:

import org.apache.commons.lang.StringUtils

String.metaClass.mixin StringUtils

assert "Foo" == "foo".capitalize()

Andere Tipps

Mir ist keine solche Methode bekannt, aber eine Problemumgehung besteht darin, die Apache Commons -Bibliothek in Ihrem Groovy -Code direkt zu verwenden:

import org.apache.commons.lang.StringUtils

def str = StringUtils.capitalize(input)

Es macht Ihren Groovy-Code ein bisschen Java-Ish (einige mögen es vielleicht nicht), aber er erledigt den Job.

IMO Der große Vorteil von Groovy besteht darin, dass Sie alle Java -Bibliotheken, die Sie normalerweise mit einer traditionelleren Java -Code -Basis verwenden, sehr leicht nutzen können.

Um es weltweit in Ihrer App zur Verfügung zu stellen, initialisieren Sie diesen Block einfach bei Start -up

String.metaclass.capitalize = {delegate [0] .touppercase ()+delegate [1 ..- 1]}

Wenn Sie noch einen Schritt weiter gehen und jedes Wort nutzen möchten, können Sie so etwas verwenden:

def words = sentence.split(" ")
def newStr = []
words.each { w ->
    def capW = [w[0].toUpperCase()]
    if (w.length() > 1) {
        capW << w[1..-1].toLowerCase()
    }
    newStr << capW.join()
}
return newStr.join(' ')

Nun, Sie können das versuchen:

"hey this is a string".split(' ').collect{it.capitalize()}.join(' ')

oder kann das sein:

char c = ' ' "hey this is a string".collect{ c = c==' '?it.capitalize():it }.join()

Ab dem Groovy 1.8.2 (bereits im September 2011 veröffentlicht), capitalize() ist eine eingebaute Verbesserung zu CharSequence die String Geräte.

def str = "hello world"
str = str.capitalize()
assert "Hello world" == str
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top