Java中是否内置了一个函数,使字符串中每个单词的第一个字符大写,而不影响其他字符?
例子:
乔恩·斯基特->乔恩·斯基特
miles o'Brien -> miles o'Brien (B仍然是大写,这排除了Title Case)
老麦当劳->
*(老麦当劳也会被发现,但我不指望它有那么聪明。)
快速浏览一下Java字符串文档就会发现只有toUpperCase()和toLowerCase(),它们当然没有提供所需的行为。当然,谷歌的结果主要是这两个函数。它看起来像一个已经被发明出来的轮子,所以问一下也无妨,这样我以后就可以用它了。
我需要做一个通用的toString(Object obj)帮助类函数,在那里我必须将字段名转换为方法名-传递对象的getXXX()。
下面是代码
/**
* @author DPARASOU
* Utility method to replace the first char of a string with uppercase but leave other chars as it is.
* ToString()
* @param inStr - String
* @return String
*/
public static String firstCaps(String inStr)
{
if (inStr != null && inStr.length() > 0)
{
char[] outStr = inStr.toCharArray();
outStr[0] = Character.toUpperCase(outStr[0]);
return String.valueOf(outStr);
}
else
return inStr;
}
我的toString()实用程序是这样的
public static String getToString(Object obj)
{
StringBuilder toString = new StringBuilder();
toString.append(obj.getClass().getSimpleName());
toString.append("[");
for(Field f : obj.getClass().getDeclaredFields())
{
toString.append(f.getName());
toString.append("=");
try{
//toString.append(f.get(obj)); //access privilege issue
toString.append(invokeGetter(obj, firstCaps(f.getName()), "get"));
}
catch(Exception e)
{
e.printStackTrace();
}
toString.append(", ");
}
toString.setCharAt(toString.length()-2, ']');
return toString.toString();
}
我做了这个小类,可以用来大写一个句子中的每个单词。如果不是空格,可以更改字符串中的单词分隔符。
package com.ecnews.ecnews_v01.Helpers;
public class Capitalize {
String sentence;
String separator = " ";
public Capitalize(String sentence) {
this.sentence = sentence;
}
public void setSeparator(String separator) {
this.separator = separator;
}
public String getCapitalized() {
StringBuilder capitalized = new StringBuilder("");
for (String word : sentence.split(separator)) {
capitalized.append(separator+Character.toUpperCase(word.charAt(0)) + word.substring(1));
}
return capitalized.toString().trim();
}
}
例子:
String sourceName = new Capitalize("this is a test"). get资本化();
sourceName将是“This Is A Test”