วิธีใช้ตัวพิมพ์ใหญ่ของข้อความตัวแรกใน TextView ในแอปพลิเคชัน Android


94

ฉันไม่ได้หมายถึง textInput ด้วย ฉันหมายความว่าเมื่อคุณมีข้อความคงที่ใน TextView (สร้างขึ้นจากการเรียกฐานข้อมูลไปยังข้อมูลที่ผู้ใช้ป้อน (ซึ่งอาจไม่ใช่ตัวพิมพ์ใหญ่)) ฉันจะแน่ใจได้อย่างไรว่าเป็นตัวพิมพ์ใหญ่

ขอบคุณ!


2
สำหรับผู้เยี่ยมชมในอนาคต ... ใน Kotlin เพียงใช้ "abcd" .capitalize ())
Amit Tumkur

คำตอบ:


186

ฉันควรจะทำสิ่งนี้ให้สำเร็จได้ด้วยการจัดการสตริง java มาตรฐานไม่มีอะไรเฉพาะสำหรับ Android หรือ TextView

สิ่งที่ต้องการ:

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

แม้ว่าอาจมีล้านวิธีในการบรรลุเป้าหมายนี้ ดูเอกสารสตริง

แก้ไข ฉันเพิ่มไฟล์.toLowerCase()


13
แค่อยากจะทราบว่านี่เป็นวิธีแก้ปัญหาที่ดีสำหรับภาษาอังกฤษ แต่ไม่เหมาะสำหรับการแปลเป็นภาษาท้องถิ่น
Billy Lazzaro

71

ต่อไปนี้ใช้ไม่ได้กับ TextView แต่ใช้งานได้กับ EditText แม้ว่าจะใช้กับข้อความที่ป้อนจากแป้นพิมพ์ไม่ใช่ข้อความที่โหลดด้วย setText () เพื่อให้เฉพาะเจาะจงมากขึ้นจะเปิด Caps บนแป้นพิมพ์และผู้ใช้สามารถลบล้างสิ่งนี้ได้ตามต้องการ

android:inputType="textCapSentences"

หรือ

TV.sname.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);

สิ่งนี้จะ CAP ตัวอักษรตัวแรก

หรือ

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

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

80
สิ่งนี้ใช้ไม่ได้กับ TextView แต่ใช้กับ EditText เท่านั้น แม้ว่าจะใช้กับข้อความที่ป้อนจากแป้นพิมพ์ไม่ใช่ข้อความที่โหลดด้วย setText () เพื่อให้มีความเฉพาะเจาะจงมากขึ้นจะเปิด Caps ในแป้นพิมพ์และผู้ใช้สามารถลบล้างสิ่งนี้ได้ตามต้องการ
Alex Cohn


22

สำหรับ Kotlin เพียงโทร

textview.text = string.capitalize()

3
ฉันคิดว่ามันจะใช้ตัวพิมพ์ใหญ่ในแต่ละคำ แต่มันใช้ได้กับคำแรกเท่านั้น
Skoua

หากคุณใช้สิ่งนี้ในแอพหลายภาษาการส่งผ่านโลแคลจะดีกว่า
Dharmendra Pratap Singh


4

สำหรับผู้เยี่ยมชมในอนาคตคุณสามารถนำเข้า (IMHO ที่ดีที่สุด) WordUtilจากApacheและเพิ่มวิธีการที่มีประโยชน์มากมายให้กับแอปของคุณได้capitalizeดังที่แสดงไว้ที่นี่:

วิธีใช้ตัวพิมพ์ใหญ่อักขระตัวแรกของแต่ละคำในสตริง


2

สำหรับฉันไม่มีงานทำ:

ฟังก์ชัน:

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

ผลลัพธ์:

I / P brain O / Pสมอง

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

I / P brain And healthถึงO / P Brain And Health

I / P brain's HealthถึงO / P Brain's Health

I / P brain's Health and legถึงO / P Brain's Health And Leg

หวังว่านี่จะช่วยคุณได้


2

คำตอบที่ยอมรับนั้นดี แต่ถ้าคุณใช้มันเพื่อรับค่าจาก textView ใน Android ควรตรวจสอบว่าสตริงว่างหรือไม่ หากสตริงว่างเปล่ามันจะทำให้เกิดข้อยกเว้น

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

2

สำหรับ Kotlin หากคุณต้องการให้แน่ใจว่ารูปแบบเป็น "Aaaaaaaaa" คุณสามารถใช้:

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

1

โปรดสร้าง TextView ที่กำหนดเองและใช้:

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

ฉันจะทำให้ CustomTextView นี้ปรากฏใน Design of Activity / Fragments เป็นองค์ประกอบ UI แบบลากแล้ววางได้อย่างไร
Kostanos

0

ที่นี่ฉันได้เขียนบทความโดยละเอียดเกี่ยวกับหัวข้อนี้เนื่องจากเรามีตัวเลือกหลายตัวอักษรตัวพิมพ์ใหญ่ตัวแรกของสตริงใน Android

วิธีการใช้อักษรตัวพิมพ์ใหญ่ตัวแรกของสตริงใน 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;
}

วิธีการใช้อักษรตัวพิมพ์ใหญ่ตัวแรกของสตริงใน 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
}

ใช้ XML Attribute

หรือคุณสามารถตั้งค่าแอตทริบิวต์นี้ใน TextView หรือ EditText ใน XML

android:inputType="textCapSentences"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.