有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java正则表达式将2个字符替换为1个字符

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

SOME_RANDOM_TEXT

应转换为:

someRandomText

因此,应该用大写字母替换u(any char)。我用tool找到了类似的东西:

_\w and $&

如何仅从替换者处获得第二封信??有什么建议吗?谢谢


共 (3) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

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

    注意,ApacheCommons有很多有用的字符串相关的东西,包括join(方法

  3. # 3 楼答案

    您还可以编写一个简单的方法来实现这一点。它更复杂,但更优化:

    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);
    }
    

    我喜欢ApacheCommons库,但有时了解它的工作原理并能够为这样的工作编写一些特定的代码是件好事