Java 将camelCase01替换为CamelCase\u 01
输出:camel_case01Java 将camelCase01替换为CamelCase\u 01,java,regex,string,format,Java,Regex,String,Format,输出:camel_case01 但是我想打印camel\u case\u 01行,这里有一种方法 将字符串拆分为字母和数字值,即将数字与字母分开。看这里- 然后,在所有字母表字符串上应用snake_大小写,并用“u”连接数组,因为Java似乎不支持使用\l进行大小写转换,您可以尝试以下方法: public class Test { public static void main(String[] args) { String key = "camelCase01"; Sy
但是我想打印camel\u case\u 01行,这里有一种方法 将字符串拆分为字母和数字值,即将数字与字母分开。看这里-
然后,在所有字母表字符串上应用snake_大小写,并用“u”连接数组,因为Java似乎不支持使用
\l
进行大小写转换,您可以尝试以下方法:
public class Test {
public static void main(String[] args) {
String key = "camelCase01";
System.out.println(caseFormat.LOWER_CAMEL.to(caseFormat.LOWER_UNDERSCORE, key));
}
}
输出
用
替换(?=\d+)
。这将打印camel\u case\u 0\u 1。@Andy Turner但我需要打印camel\u case\u 01您只想让regex执行此任务吗?因为在java中,这可以通过其他方式轻松完成。
public static String toSnake(String s) {
return s.replaceAll("([A-Z]|\\d+)", "_$1") // add _ before a cap letter or sequence of digits
.replaceAll("_+", "_") // replace multiple underscores with one
.replaceAll("^_", "") // remove leading underscores
.toLowerCase();
}
// Test
Arrays.asList(
"camelCase01", "anotherCamelCase", "version1",
"version1_2", "PascalCase", "123SlySnake")
.forEach(s -> System.out.println(s + " -> " + toSnake(s)));
camelCase01 -> camel_case_01
anotherCamelCase -> another_camel_case
version1 -> version_1
version1_2 -> version_1_2
PascalCase -> pascal_case
123SlySnake -> 123_sly_snake