Capisco perché l'output desiderato non viene fornito per la conversione utilizzando regex una stringa come FooBarquella Foo_Barche invece dà Foo_Bar_. Avrei potuto fare qualcosa con String.substring substring(0, string.length() - 2)o semplicemente sostituire l'ultimo carattere, ma penso che ci sia una soluzione migliore a tale scenario.
Ecco il codice:
String regex = "([A-Z][a-z]+)";
String replacement = "$1_";
"CamelCaseToSomethingElse".replaceAll(regex, replacement);
/*
outputs: Camel_Case_To_Something_Else_
desired output: Camel_Case_To_Something_Else
*/
Domanda: Cerchi un modo più ordinato per ottenere l'output desiderato?