Was ist der eleganteste Weg, um ein durch Bindestriche getrenntes Wort (z. B. "Mach etwas") in die niedrigere Camel-Case-Variante (z. B. "doSomeStuff") zu konvertieren?
Was ist der eleganteste Weg, um zu konvertieren ein Bindestrich getrennten Wortes (z.B. "do-some-Sachen") der unteren camel-case-Variante (z.B. "doSomeStuff") in Java?
Kommentar zu dem Problem - Öffnen
WTH ist jedes Beispiel Antwort implementiert eine öffentliche statische Methode? Wenn das sollte klar sein ein versteckt detail von einer größeren Abstraktion.
InformationsquelleAutor der Frage codevour | 2010-09-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
CaseFormat
von Guave:InformationsquelleAutor der Antwort Joachim Sauer
Folgende Methode behandeln soll, die die Aufgabe sehr effizient in O(n). Wir haben gerade Iteration über die Zeichen der xml-name der Methode, überspringen Sie die '-' und profitieren chars, wenn nötig.
InformationsquelleAutor der Antwort Andreas_D
Warum nicht versuchen Sie dies:
BEARBEITEN: Auf den zweiten Gedanken... Beim Versuch, dies umzusetzen, fand ich heraus, es gibt keine einfache Möglichkeit zum Beitritt in eine Liste von Zeichenketten in Java. Es sei denn, Sie verwenden
StringUtil
von apache. So erstellen Sie eineStringBuilder
sowieso und somit der Algorithmus ist ein wenig hässlich 🙁CODE: Hier ist ein Beispiel für die oben erwähnte Vorgehensweise. Könnte jemand mit einem Java-compiler (sorry, don ' T haben ein handy) testen? Und vergleichen Sie es mit anderen Versionen hier gefunden?
InformationsquelleAutor der Antwort Daren Thomas
Mit Java 8 gibt es endlich ein one-liner:
Obwohl es dauert Aufteilung über 4 tatsächlichen Zeilen lesbar sein ツ
(Hinweis:
"\\-"
ist für kebab-Fall pro Frage, für snake_case einfach ändern zu"_"
)InformationsquelleAutor der Antwort earcam
Wenn Sie nicht wie angewiesen auf eine Bibliothek, die Sie verwenden können, eine Kombination von regex und
String.format
. Verwenden Sie einen regex zu extrahieren, die Start-Zeichen nach der-
. Verwenden Sie diese als input fürString.format
. Ein bisschen tricky, funktioniert aber ohne (explizit) - Schleife ;).InformationsquelleAutor der Antwort Arne
Hier ist eine leichte variation von Andreas' Antwort, dass nicht mehr als der OP fragte nach:
Es behandelt einige Sonderfälle:
fUnnY-cASe
umgewandeltfunnyCase
--dash-before-and--after-
umgewandeltdashBeforeAndAfter
some.other$funky:chars?
umgewandeltsomeOtherFunkyChars
InformationsquelleAutor der Antwort Sean Patrick Floyd
Holen Sie sich Die Apache-commons-Glas für StringUtils. Dann können Sie mit der Methode profitieren
InformationsquelleAutor der Antwort Sean
So, ich bin kein großer fan von hinzufügen einer Bibliothek, die nur für eine Methode, die ich umgesetzt habe meine eigene Lösung (von-camel-case snake-Fall):
Bedürfnisse angepasst werden, je nach dem in /out-Fällen.
InformationsquelleAutor der Antwort Pierre Lemée
Durchlaufen der Schnur. Wenn Sie finden, die einen hypen, entfernen Sie es, und profitieren der nächste Brief.
InformationsquelleAutor der Antwort Noel M
Für diejenigen, die com hat.fasterxml.jackson-Bibliothek in das Projekt und wollen nicht hinzufügen, Guave können Sie die jaskson namingStrategy Methode:
InformationsquelleAutor der Antwort Chi Dov