Cách viết hoa chữ cái đầu tiên của văn bản trong TextView trong ứng dụng Android


89

Tôi cũng không đề cập đến textInput. Ý tôi là khi bạn có văn bản tĩnh trong TextView (được điền từ lệnh gọi Cơ sở dữ liệu đến dữ liệu do người dùng nhập (có thể không được Viết hoa)), làm cách nào để đảm bảo chúng được viết hoa?

Cảm ơn!


2
Đối với du khách trong tương lai ... Trong Kotlin chỉ cần sử dụng "abcd" .capitalize ())
Amit tumkur

Câu trả lời:


181

Tôi có thể thực hiện điều này thông qua thao tác chuỗi java tiêu chuẩn, không có gì cụ thể cho Android hoặc TextView.

Cái gì đó như:

String upperString = myString.substring(0, 1).toUpperCase() + myString.substring(1).toLowerCase();

Mặc dù có lẽ có hàng triệu cách để thực hiện điều này. Xem tài liệu Chuỗi .

ĐÃ CHỈNH SỬA Tôi đã thêm.toLowerCase()


12
Chỉ muốn lưu ý rằng đây là một giải pháp tốt cho tiếng Anh, nhưng không thân thiện với bản địa hóa.
Billy Lazzaro

70

Sau đây không áp dụng cho TextView, nhưng hoạt động với EditText; thậm chí sau đó, nó áp dụng cho văn bản được nhập từ bàn phím, không áp dụng cho văn bản được tải bằng setText (). Cụ thể hơn, nó sẽ bật Caps trên bàn phím và người dùng có thể ghi đè nó theo ý mình.

android:inputType="textCapSentences"

hoặc là

TV.sname.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);

Điều này sẽ viết hoa chữ cái đầu tiên.

hoặc là

compile 'org.apache.commons:commons-lang3:3.4' //in build.gradle module(app)

tv.setText(StringUtils.capitalize(myString.toLowerCase().trim()));

79
Điều này không áp dụng cho TextView mà chỉ áp dụng cho EditText; thậm chí sau đó, nó áp dụng cho văn bản được nhập từ bàn phím, không phải văn bản được tải bằng setText (). Cụ thể hơn, nó sẽ bật Caps trên bàn phím và người dùng có thể ghi đè nó theo ý mình.
Alex Cohn

28
StringBuilder sb = new StringBuilder(name);
sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));  
return sb.toString();

20

đối với Kotlin, chỉ cần gọi

textview.text = string.capitalize()

3
Tôi đã nghĩ rằng nó sẽ viết hoa từng từ nhưng nó thực sự chỉ hoạt động cho từ đầu tiên.
Skoua

Nếu bạn đang sử dụng tính năng này trong ứng dụng đa ngôn ngữ, việc chuyển ngôn ngữ sẽ giúp nó tốt hơn.
Dharmendra Pratap Singh



2

Đối với tôi không có tác dụng:

Chức năng:

private String getCapsSentences(String tagName) {
    String[] splits = tagName.toLowerCase().split(" ");
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < splits.length; i++) {
        String eachWord = splits[i];
        if (i > 0 && eachWord.length() > 0) {
            sb.append(" ");
        }
        String cap = eachWord.substring(0, 1).toUpperCase() 
                + eachWord.substring(1);
        sb.append(cap);
    }
    return sb.toString();
}

Kết quả:

I / P brain O / P Não

I / P Brain and Health O / P Brain And Health

I / P brain And health đến O / P Brain And Health

I / P brain's Health đến O / P Brain's Health

I / P brain's Health and leg đến O / P Brain's Health And Leg

Hy vọng điều này sẽ giúp bạn.


2

Câu trả lời được chấp nhận là tốt, nhưng nếu bạn đang sử dụng nó để lấy các giá trị từ textView trong android, sẽ tốt hơn nếu bạn kiểm tra xem chuỗi có trống hay không. Nếu chuỗi trống, nó sẽ ném ra một ngoại lệ.

private String capitizeString(String name){
    String captilizedString="";
    if(!name.trim().equals("")){
       captilizedString = name.substring(0,1).toUpperCase() + name.substring(1);
    }
    return captilizedString;
}

2

Đối với Kotlin, nếu bạn muốn chắc chắn rằng định dạng là "Aaaaaaaaa", bạn có thể sử dụng:

myString.toLowerCase(Locale.getDefault()).capitalize()

1

Vui lòng tạo TextView tùy chỉnh và sử dụng nó:

public class CustomTextView extends TextView {

    public CapitalizedTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public void setText(CharSequence text, BufferType type) {
        if (text.length() > 0) {
            text = String.valueOf(text.charAt(0)).toUpperCase() + text.subSequence(1, text.length());
        }
        super.setText(text, type);
    }
}

làm cách nào để làm cho CustomTextView này xuất hiện trong Thiết kế Hoạt động / Phân đoạn dưới dạng kéo và thả phần tử giao diện người dùng?
Kostanos 19/02/19

0

Ở đây tôi đã viết một bài viết chi tiết về chủ đề này, vì chúng tôi có một số tùy chọn, Viết hoa chữ cái đầu tiên của chuỗi trong Android

Phương pháp viết hoa chữ cái đầu tiên của chuỗi trong Java

public static String capitalizeString(String str) {
        String retStr = str;
        try { // We can face index out of bound exception if the string is null
            retStr = str.substring(0, 1).toUpperCase() + str.substring(1);
        }catch (Exception e){}
        return retStr;
}

Phương pháp viết hoa chữ cái đầu tiên của chuỗi trong Kotlin

fun capitalizeString(str: String): String {
        var retStr = str
        try { // We can face index out of bound exception if the string is null
            retStr = str.substring(0, 1).toUpperCase() + str.substring(1)
        } catch (e: Exception) {
        }
        return retStr
}

Sử dụng thuộc tính XML

Hoặc bạn có thể đặt thuộc tính này trong TextView hoặc EditText trong XML

android:inputType="textCapSentences"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.