假设有两个Java String对象:
String str = "<my string>";
String strLower = str.toLowerCase();
Run Code Online (Sandbox Code Playgroud)
对于<my string>表达式的每个值,它是否正确呢?
str.length() == strLower.length()
Run Code Online (Sandbox Code Playgroud)
评估到true?
那么,是否String.toLowerCase()为String的任何值保留原始字符串长度?
让我们考虑以下示例:
String s = str.replaceAll("regexp", "$1");
Run Code Online (Sandbox Code Playgroud)
有些语言让我们指定\U$1的地方$1,其将匹配用大写字母组.如何使用Java实现相同的目标?
我知道我们可以使用Pattern类并获取组并将其转换为大写,但这不是我想要的.我想改变$1完成工作的东西.
我也尝试过:
String s = str.replaceAll("regexp", "$1".toUpperCase());
Run Code Online (Sandbox Code Playgroud)
但它看起来"$1".toUpperCase()是,"$1"而不是匹配.我确认使用:
String s = str.replaceAll("regexp", method("$1"));
// method declared as method()
private static String method(String s) {
System.out.println(s); // prints "$1"
return s;
}
Run Code Online (Sandbox Code Playgroud)
甚至在Java中是否允许?
编辑:
String s = "abc";
System.out.println(s.replaceAll("(a)", "$1")); // should print "Abc"
Run Code Online (Sandbox Code Playgroud)
编辑可能的DUPE:
我不是在寻找的方式使用m.group(),是否有可能使用类似\U$1的地方$1有replaceAll()
假设我想将小写字符串更改为"标题大小写"; 每个单词的第一个字母大写的地方.可以replaceAll()通过在替换表达式中使用修饰符一次调用来完成吗?
例如,
str = str.replaceAll("\\b(\\S)", "???$1");
Run Code Online (Sandbox Code Playgroud)
哪里"???" 是一些折叠下一个字母大小写的表达式.
我已经看到这是其他工具(如textpad),\U将下一个字母折叠为大写.
?
我有一个看起来像这样的字符串:
CALDARI_STARSHIP_ENGINEERING
Run Code Online (Sandbox Code Playgroud)
我需要编辑它看起来像
Caldari Starship Engineering
Run Code Online (Sandbox Code Playgroud)
不幸的是,早上三点,我不能为我的生活弄清楚这一点.我总是在更换字符串中的东西时遇到麻烦,所以任何帮助都会很棒,并且会帮助我了解将来如何做到这一点.