0

我想对以下问题使用正则表达式:

SOME_RANDOM_TEXT

应转换为:

someRandomText

因此,_(any char) 应该只替换为大写字母。我发现了类似的东西,使用该工具

_\w and $&

如何仅从替换中获取第二个字母?有什么建议吗?谢谢。

4

3 回答 3

4

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

请注意,Apache Commons 有很多有用的与字符串相关的东西,包括join( ) 方法。

于 2012-10-22T10:59:29.590 回答
1

问题是Java.util.regex.Pattern不支持从小写到大写的大小写转换 这意味着您需要按照 Brian 的建议以编程方式进行转换。另请参阅此线程

于 2012-10-22T11:34:19.257 回答
-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 公共库,但有时了解它的工作原理并能够为这样的工作编写一些特定的代码是件好事。

于 2012-10-22T11:08:53.783 回答