正则表达式用一个替换2个字符

时间:2012-10-22 10:55:50

标签: java regex string

我想使用正则表达式来解决以下问题:

SOME_RANDOM_TEXT

应转换为:

someRandomText

所以,_(任何字符)应该只用大写字母替换。我使用tool

找到了类似的东西
_\w and $&

如何只获得替换的第二个字母?任何建议?感谢。

3 个答案:

答案 0 :(得分:4)

简单地String.split("_")然后重新加入,大写集合中每个字符串的第一个字母可能更容易。

请注意,Apache Commons有许多有用的字符串相关内容,包括join()方法。

答案 1 :(得分:1)

问题是Java.util.regex.Pattern不支持从小写转换为大写的大小写 这意味着您需要像Brian建议的那样以编程方式进行转换。另请参阅this thread

答案 2 :(得分:-1)

您还可以编写一个简单的方法来执行此操作。它更复杂但更优化:

public static String toCamelCase(String value) {
    value = value.toLowerCase();
    byte[] source = value.getBytes();
    int maxLen = source.length;
    byte[] target = new byte[maxLen];
    int targetIndex = 0;

    for (int sourceIndex = 0; sourceIndex < maxLen; sourceIndex++) {
        byte c = source[sourceIndex];
        if (c == '_') {
            if (sourceIndex < maxLen - 1)
                source[sourceIndex + 1] = (byte) Character.toUpperCase(source[sourceIndex + 1]);
            continue;
        }

        target[targetIndex++] = source[sourceIndex];
    }

    return new String(target, 0, targetIndex);
}

我喜欢Apache commons库,但有时候知道它是如何工作的并且能够为这样的工作编写一些特定代码是很好的。