Я розумію, чому бажаний результат не дається для перетворення за допомогою регулярного виразу, рядок, подібний FooBarдо Foo_Barякого замість цього дає Foo_Bar_. Я міг зробити щось із String.substring substring(0, string.length() - 2)або просто замінити останній символ, але я думаю, що для такого сценарію є краще рішення.
Ось код:
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
*/
Питання: Шукаєте більш акуратний спосіб отримати бажаний результат?