我想使用正则表达式以下问题:正则表达式替换2个字符与一个
SOME_RANDOM_TEXT
应转换为:
someRandomText
如此,_(任何字符)应该用大写字母替换。我发现类似的东西,使用tool:
_\w and $&
如何让仅从更换的第二个字母?有什么建议?谢谢。
我想使用正则表达式以下问题:正则表达式替换2个字符与一个
SOME_RANDOM_TEXT
应转换为:
someRandomText
如此,_(任何字符)应该用大写字母替换。我发现类似的东西,使用tool:
_\w and $&
如何让仅从更换的第二个字母?有什么建议?谢谢。
你也可以写一个简单的方法来做到这一点。它更复杂,但更优化:
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);
}
我喜欢阿帕奇公共图书馆,但有时它的好,知道它是如何工作的,并能编写一些特定的代码,像这样的工作。
问题是不支持从小写转换为大写的情况Java.util.regex.Pattern 这意味着您需要按照Brian的建议以编程方式进行转换。另请参阅this thread
某些语言具有标志(例如\ u将相邻的反向引用转换为小写),可以修改反向引用,我不知道在java中是否有这种情况 –
遗憾的是不是 –
如果正则表达式是一个选项,会在正则表达式和替换字符串中的$ 1中使用_([A-Za-z])或'_(\ p {L})'。圆括号捕获组#1中的字母(假设它是第一组parens),'$ 1'作为替换字符串中该组的占位符。 ('\ w'是不正确的,因为它除了字母外还匹配数字和下划线,'\ p {L}'比'[A-Za-z]更正确,因为它匹配Unicode字母,而不仅仅是ASCII。 ) –