标题案例功能

时间:2014-04-30 20:16:09

标签: java android

是否有内置函数为您执行title-case或者我是否必须编写自定义函数?我正试图为全名命名。

即。 john doe 应转换为: John Doe

3 个答案:

答案 0 :(得分:1)

我现在能想到的最简单的代码:

String str = "mR. jOhn smIth";
final String[] arr = TextUtils.split(str," ");
final int len = arr.length;

for(int i = 0; i < len; i++)
{
    final String s = arr[i];
    final String s0 = "" + s.toUpperCase().charAt(0);
    final String s1 =  s.toLowerCase().substring(1, s.length());
    arr[i] = s0 + s1;
}

str = TextUtils.join(" ", arr); // and now str contains "Mr. John Smith"

答案 1 :(得分:0)

不,它在官方Android API中不存在,但编写自己的API非常容易。像这样:

public static String camelCasedString(String s){
    boolean shouldCapitalize = true;
    char[] arr = s.toCharArray();
    for(int i = 0; i < arr.length; i++){
        if(arr[i] == ' '){
            shouldCapitalize = true;
        } else if(shouldCapitalize){
            arr[i] = Character.toUpperCase(arr[i]);
            shouldCapitalize = false;
        } else {
            arr[i] = Character.toLowerCase(arr[i]);
        }
    }
    return new String(arr);
}

输出:

System.out.println(camelCasedString("john dOe")); //John Doe
System.out.println(camelCasedString("john doe")); //John Doe
System.out.println(camelCasedString("John Doe")); //John Doe
System.out.println(camelCasedString("JOHN DOE")); //John Doe

答案 2 :(得分:-1)

你还没有说过什么语言,所以我只假设javascript。 我所知道的最紧凑的方式是:

String.prototype.titleCase = function() {
    t = this.split(' ').map((word) => word.charAt(0).toUpperCase()+word.slice(1)).join(' ');
    return t;
}

因为我已经在String.prototype上声明了这个函数,所以你可以这样使用它:

"This is a title".titleCase() // >> "This Is A Title"

这可能不是报纸编辑所拥有的100%,但它确实是你希望它做的事情。如果您需要进一步解释,请告诉我。