ฉันไม่ได้หมายถึง textInput ด้วย ฉันหมายความว่าเมื่อคุณมีข้อความคงที่ใน TextView (สร้างขึ้นจากการเรียกฐานข้อมูลไปยังข้อมูลที่ผู้ใช้ป้อน (ซึ่งอาจไม่ใช่ตัวพิมพ์ใหญ่)) ฉันจะแน่ใจได้อย่างไรว่าเป็นตัวพิมพ์ใหญ่
ขอบคุณ!
ฉันไม่ได้หมายถึง textInput ด้วย ฉันหมายความว่าเมื่อคุณมีข้อความคงที่ใน TextView (สร้างขึ้นจากการเรียกฐานข้อมูลไปยังข้อมูลที่ผู้ใช้ป้อน (ซึ่งอาจไม่ใช่ตัวพิมพ์ใหญ่)) ฉันจะแน่ใจได้อย่างไรว่าเป็นตัวพิมพ์ใหญ่
ขอบคุณ!
คำตอบ:
ฉันควรจะทำสิ่งนี้ให้สำเร็จได้ด้วยการจัดการสตริง java มาตรฐานไม่มีอะไรเฉพาะสำหรับ Android หรือ TextView
สิ่งที่ต้องการ:
String upperString = myString.substring(0, 1).toUpperCase() + myString.substring(1).toLowerCase();
แม้ว่าอาจมีล้านวิธีในการบรรลุเป้าหมายนี้ ดูเอกสารสตริง
แก้ไข
ฉันเพิ่มไฟล์.toLowerCase()
ต่อไปนี้ใช้ไม่ได้กับ 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()));
StringBuilder sb = new StringBuilder(name);
sb.setCharAt(0, Character.toUpperCase(sb.charAt(0)));
return sb.toString();
สำหรับ Kotlin เพียงโทร
textview.text = string.capitalize()
คุณสามารถเพิ่มApache Commons Lang
ใน Gradle เช่นcompile 'org.apache.commons:commons-lang3:3.4'
และการใช้งาน WordUtils.capitalizeFully(name)
สำหรับผู้เยี่ยมชมในอนาคตคุณสามารถนำเข้า (IMHO ที่ดีที่สุด) WordUtil
จากApache
และเพิ่มวิธีการที่มีประโยชน์มากมายให้กับแอปของคุณได้capitalize
ดังที่แสดงไว้ที่นี่:
สำหรับฉันไม่มีงานทำ:
ฟังก์ชัน:
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
หวังว่านี่จะช่วยคุณได้
คำตอบที่ยอมรับนั้นดี แต่ถ้าคุณใช้มันเพื่อรับค่าจาก textView ใน Android ควรตรวจสอบว่าสตริงว่างหรือไม่ หากสตริงว่างเปล่ามันจะทำให้เกิดข้อยกเว้น
private String capitizeString(String name){
String captilizedString="";
if(!name.trim().equals("")){
captilizedString = name.substring(0,1).toUpperCase() + name.substring(1);
}
return captilizedString;
}
สำหรับ Kotlin หากคุณต้องการให้แน่ใจว่ารูปแบบเป็น "Aaaaaaaaa" คุณสามารถใช้:
myString.toLowerCase(Locale.getDefault()).capitalize()
โปรดสร้าง 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);
}
}
ที่นี่ฉันได้เขียนบทความโดยละเอียดเกี่ยวกับหัวข้อนี้เนื่องจากเรามีตัวเลือกหลายตัวอักษรตัวพิมพ์ใหญ่ตัวแรกของสตริงใน 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"