如果有连续的大写字母,如何在Java中将Camel Case转换为Lower Hyphen

时间:2017-11-30 19:44:12

标签: java regex guava

我有字符串" B2BNewQuoteProcess"。当我使用Guava将Camel Case转换为Lower Hyphen时,如下所示:

CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_HYPHEN,"B2BNewQuoteProcess");

我得到" b2-b-new-quote-process"。

我正在寻找的是" b2b-new-quote-process" ...

我如何用Java做到这一点?

1 个答案:

答案 0 :(得分:6)

代码

See regex in use here

(?=[A-Z][a-z])

替换:-

注意:上面的正则表达式不会将大写字符转换为小写字母;它只是将-插入应该拥有它们的位置。使用.toLowerCase()在下面的Java代码中将大写字符转换为小写字符。

用法

See code in use here

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字母。这用作职位的断言。替换只需将连字符-插入与此前瞻符合的位置。