我有字符串" B2BNewQuoteProcess"。当我使用Guava将Camel Case转换为Lower Hyphen时,如下所示:
CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_HYPHEN,"B2BNewQuoteProcess");
我得到" b2-b-new-quote-process"。
我正在寻找的是" b2b-new-quote-process" ...
我如何用Java做到这一点?
答案 0 :(得分:6)
(?=[A-Z][a-z])
替换:-
注意:上面的正则表达式不会将大写字符转换为小写字母;它只是将-
插入应该拥有它们的位置。使用.toLowerCase()
在下面的Java代码中将大写字符转换为小写字符。
import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
final String regex = "(?=[A-Z][a-z])";
final String string = "B2BNewQuoteProcess";
final String subst = "-";
final Pattern pattern = Pattern.compile(regex);
final Matcher matcher = pattern.matcher(string);
// The substituted value will be contained in the result variable
final String result = matcher.replaceAll(subst);
System.out.println("Substitution result: " + result.toLowerCase());
}
}
(?=[A-Z][a-z])
确保以下内容的正向预测是一个大写的ASCII字母后跟一个小写的ASCII字母。这用作职位的断言。替换只需将连字符-
插入与此前瞻符合的位置。