Groovy GDK-Äquivalent von Apache Commons StringUtils.capitalize (str) oder Perls urcfirst (str)

8

Ja / Nein-Frage: Gibt es eine Groovy GDK-Funktion, um das erste Zeichen einer Zeichenkette groß zu schreiben?

Ich suche nach einem Groovy-Äquivalent von Perls ucfirst (..) oder Apache Commons StringUtils.capitalize (str) (letzterer setzt den ersten Buchstaben aller Wörter in der Eingabe-Zeichenkette groß).

Ich schreibe das gerade per Hand mit ..

%Vor%

.. das funktioniert, aber ich nehme an, dass es einen groovigeren Weg gibt, es zu tun. Ich würde mir vorstellen, dass zuerst (..) eine häufigere Operation ist als center (..), was eine Standardmethode im Groovy GDK ist (siehe Ссылка ).

    
knorv 25.03.2009, 14:24
quelle

6 Antworten

21

Nein, nichts direkt in die Sprache eingebaut.

Es gibt ein paar groovigere Möglichkeiten, um das zu tun, was Sie fragen (wenn Sie StringUtils nicht in Java-idiomatischer Weise verwenden wollen, wie Vladimir es vorschlägt).

Sie können Ihre Methode vereinfachen, indem Sie einen negativen Wert in der zweiten Hälfte Ihres Bereichs verwenden:

%Vor%

Oder Sie können eine statische Importfunktion verwenden, um sie wie eine native Methode aussehen zu lassen:

%Vor%

Sie können die metaClass auch so ändern, dass alle StringUtils-Methoden darauf angewendet werden, sodass sie wie eine GDK-Methode aussieht:

%Vor%     
Ted Naleid 26.03.2009, 00:46
quelle
6

Ich kenne keine solche Methode, aber eine Umgehungslösung besteht darin, die Apache Commons-Bibliothek direkt in Ihrem Groovy-Code zu verwenden:

%Vor%

Es macht Ihren Groovy-Code ein wenig Java-isch (einige mögen es nicht mögen), aber es macht den Job.

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

    
Vladimir 25.03.2009 14:33
quelle
0

Um es global in Ihrer App verfügbar zu machen, initialisieren Sie diesen Block beim Start einfach

String.metaClass.capitalize = {             delegiere [0] .toUpperCase () + delegiere [1 ..- 1]         }

    
Ratn Deo--Dev 15.01.2011 06:49
quelle
0

Wenn Sie einen Schritt weiter gehen und jedes Wort groß schreiben möchten, können Sie etwas wie folgt verwenden:

%Vor%     
cavneb 20.04.2012 16:06
quelle
0

Nun, Sie können das versuchen:

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

oder vielleicht Folgendes:

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

    
Sachin 14.07.2015 19:18
quelle
0

Ab Groovy 1.8.2 (erschienen im September 2011), capitalize() ist eine integrierte Erweiterung zu CharSequence , die String implementiert.

%Vor%     
doelleri 14.07.2015 19:48
quelle

Tags und Links