首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在android中将字符串转换为标题大小写?

如何在android中将字符串转换为标题大小写?
EN

Stack Overflow用户
提问于 2012-09-12 19:47:51
回答 11查看 36.2K关注 0票数 25

我到处寻找,但只能找到对这类问题的间接引用。在开发android应用程序时,如果您有一个用户输入的字符串,如何将其转换为标题大小写(即。使每个单词的第一个字母大写)?我不想导入整个库(比如Apache的WordUtils)。

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2015-03-05 04:31:21

代码语言:javascript
复制
     /**
     * Function to convert string to title case
     * 
     * @param string - Passed string 
     */
    public static String toTitleCase(String string) {

        // Check if String is null
        if (string == null) {
            
            return null;
        }

        boolean whiteSpace = true;
        
        StringBuilder builder = new StringBuilder(string); // String builder to store string
        final int builderLength = builder.length();

        // Loop through builder
        for (int i = 0; i < builderLength; ++i) {

            char c = builder.charAt(i); // Get character at builders position
            
            if (whiteSpace) {
                
                // Check if character is not white space
                if (!Character.isWhitespace(c)) {
                    
                    // Convert to title case and leave whitespace mode.
                    builder.setCharAt(i, Character.toTitleCase(c));
                    whiteSpace = false;
                }
            } else if (Character.isWhitespace(c)) {
                
                whiteSpace = true; // Set character is white space
            
            } else {
            
                builder.setCharAt(i, Character.toLowerCase(c)); // Set character to lowercase
            }
        }

        return builder.toString(); // Return builders text
    }
票数 40
EN

Stack Overflow用户

发布于 2012-09-12 19:50:20

你要找的是阿帕奇的WordUtils.capitalize() method

票数 17
EN

Stack Overflow用户

发布于 2012-09-12 19:47:51

我从这里得到了一些建议:Android,need to make in my ListView the first letter of each word uppercase,但最后,我提出了自己的解决方案(注意,这种方法假设所有单词都由一个空格字符分隔,这符合我的需要):

代码语言:javascript
复制
String[] words = input.getText().toString().split(" ");
StringBuilder sb = new StringBuilder();
if (words[0].length() > 0) {
    sb.append(Character.toUpperCase(words[0].charAt(0)) + words[0].subSequence(1, words[0].length()).toString().toLowerCase());
    for (int i = 1; i < words.length; i++) {
        sb.append(" ");
        sb.append(Character.toUpperCase(words[i].charAt(0)) + words[i].subSequence(1, words[i].length()).toString().toLowerCase());
    }
}
String titleCaseValue = sb.toString();

...where输入是一个EditText视图。在视图上设置输入类型也很有帮助,这样它就可以默认为标题大小写:

代码语言:javascript
复制
input.setInputType(InputType.TYPE_TEXT_FLAG_CAP_WORDS);
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12387492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档