是否有一个内置于Java中的函数可以将String中每个单词的第一个字符大写,而不影响其他单词?
例子:
jon skeet - > Jon Skeetmiles o'Brien- > Miles O'Brien(B仍然是资本,这排除了标题案例)old mcdonald- > Old Mcdonald**(Old McDonald也会发现,但我不认为它那么聪明.)
就让我们来看看在Java的String文档仅揭示toUpperCase()和toLowerCase(),这当然不提供所需的行为.当然,谷歌的结果由这两个功能主导.它看起来像一个必须已经发明的轮子,所以它可以不会受到伤害,所以我可以在将来使用它.
我正在阅读文档StringBuffer,特别是reverse()方法.该文件提到了代理人对的一些内容.在这种情况下,什么是代理对?什么是低和高代理人?
可能重复:
大写字符串Java中每个单词的第一个字符
我有一个字符串:"你好旧世界",我希望每个单词的每个第一个字母大写,而不是整个字符串.toUpperCase().是否有现有的java助手来完成这项工作?
我在将字符串中的第一个字母转换为Capital时遇到问题:
rackingSystem.toLowerCase(); // has capitals in every word, so first convert all to lower case
StringBuilder rackingSystemSb = new StringBuilder();
rackingSystemSb.append(rackingSystem);
rackingSystemSb.setCharAt(0, Character.toUpperCase(rackingSystemSb.charAt(0)));
rackingSystem = rackingSystemSb.toString();
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用..
有什么建议?
截至目前,我正在使用此代码在字符串首字母中创建我的第一个字母
String output = input.substring(0, 1).toUpperCase() + input.substring(1);
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎很脏..有任何直接或优雅的方式..
最近,只有我注意到,有可能substring返回带有无效 unicode 字符的字符串。
例如
public class Main {
public static void main(String[] args) {
String text = "_Salade verte";
/* We should avoid using endIndex = 1, as it will cause an invalid character in the returned substring. */
// 1 : ?
System.out.println("1 : " + text.substring(0, 1));
// 2 :
System.out.println("2 : " + text.substring(0, 2));
// 3 : _
System.out.println("3 : " + text.substring(0, 3));
// 4 : _S
System.out.println("4 : " + text.substring(0, 4)); …Run Code Online (Sandbox Code Playgroud) 我正在重构我的一些旧代码,然后我发现我Character.toTitleCase()在某些时候使用过方法并且无法帮助自己想知道是否Character.toUpperCase()会更好.
我阅读了他们的描述并没有看到任何基本的区别:
使用UnicodeData文件中的大小写映射信息将字符参数转换为大写.请注意,对于某些字符范围,Character.isUpperCase(Character.toUpperCase(ch))并不总是返回true,特别是那些符号或表意符号.
通常,String.toUpperCase()应该用于将字符映射到大写.字符串大小写映射方法比字符大小写映射方法有几个好处.字符串大小写映射方法可以执行区域设置敏感的映射,上下文相关的映射和1:M字符映射,而字符大小写映射方法则不能.
注意:此方法无法处理补充字符.要支持所有Unicode字符(包括增补字符),请使用toUpperCase(int)方法.
和
使用UnicodeData文件中的大小写映射信息将字符参数转换为titlecase.如果一个字符没有明确的标题映射,并且根据UnicodeData本身不是一个标题字符串,那么大写映射将作为等效的标题映射返回.如果char参数已经是titlecase char,则返回相同的char值.请注意,对于某些字符范围,Character.isTitleCase(Character.toTitleCase(ch))并不总是返回true.
注意:此方法无法处理补充字符.要支持所有Unicode字符(包括增补字符),请使用toTitleCase(int)方法.
然后我试着像这样测试它们:
public class Test {
public static void main(String... args) {
String originalString = "abcdefghijklmnopqrstuvwxyz123546-.,/*&%+";
StringBuilder upperCaseStringBuilder = new StringBuilder();
StringBuilder titleCaseStringBuilder = new StringBuilder();
for (int i = 0; i < originalString.length(); i++) {
upperCaseStringBuilder.append(Character.toUpperCase(originalString.charAt(i)));
titleCaseStringBuilder.append(Character.toTitleCase(originalString.charAt(i)));
}
System.out.println("Original String : " + originalString);
System.out.println("UpperCase result: " + upperCaseStringBuilder.toString());
System.out.println("TitleCase result: " + titleCaseStringBuilder.toString());
}
}
Run Code Online (Sandbox Code Playgroud)
这是输出:
Original String : abcdefghijklmnopqrstuvwxyz123546-.,/*&%+
UpperCase result: ABCDEFGHIJKLMNOPQRSTUVWXYZ123546-.,/*&%+
TitleCase …Run Code Online (Sandbox Code Playgroud)