Это не так сложно, как кажется. Используя Pattern, Matcher и несколько групп регулярных выражений, это всего лишь несколько строк кода:
Pattern re = Pattern.compile("^([^-]+)-(.)(.*)$");
Matcher m = re.matcher("product-code");
if (m.matches())
{
// Could do: s = m.group(1) + m.group(2).toUpperCase() + m.group(3)
// Using a StringBuilder is more efficient, though.
StringBuilder buf = new StringBuilder();
buf.append(m.group(1));
buf.append(m.group(2).toUpperCase());
buf.append(m.group(3));
System.out.println(buf.toString());
}
Превращение этого в общую функцию или метод оставлено читателю в качестве упражнения. ; -)
EDIT
Обработка нескольких совпадений:
String s = "product-code boo-yah";
Pattern re = Pattern.compile("^([^-]+)-(.)(.*)$");
Matcher m = re.matcher(s);
while (m.matches())
{
s = m.group(1) + m.group(2).toUpperCase() + m.group(3);
m = re.matcher(s);
}
System.out.println(s);
ПРИМЕЧАНИЕ. Я проверил этот код.