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

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (33)

我搜索了高和低,但只能找到这种类型的问题的间接引用。当开发一个android应用程序时,如果你有一个由用户输入的字符串,你怎样才能将它转换为标题大小写?我宁愿不导入整个库(例如Apache的WordUtils)。

提问于
用户回答回答于

我推出了自己的解决方案(注意,这种方法假定所有单词由单个空格字符分隔,对我的需求很好):

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();

在视图上设置输入类型也很有帮助,因此无论如何它都默认为标题大小写:

input.setInputType(InputType.TYPE_TEXT_FLAG_CAP_WORDS);
用户回答回答于

把它放在你的文本实用程序类中:

public static String toTitleCase(String str) {

    if (str == null) {
        return null;
    }

    boolean space = true;
    StringBuilder builder = new StringBuilder(str);
    final int len = builder.length();

    for (int i = 0; i < len; ++i) {
        char c = builder.charAt(i);
        if (space) {
            if (!Character.isWhitespace(c)) {
                // Convert to title case and switch out of whitespace mode.
                builder.setCharAt(i, Character.toTitleCase(c));
                space = false;
            }
        } else if (Character.isWhitespace(c)) {
            space = true;
        } else {
            builder.setCharAt(i, Character.toLowerCase(c));
        }
    }

    return builder.toString();
}

扫码关注云+社区