एंड्रॉइड एप्लिकेशन में टेक्स्ट व्यू में टेक्स्ट के पहले अक्षर को कैपिटल कैसे करें


89

मैं textInput का जिक्र नहीं कर रहा हूं। मेरा मतलब है कि एक बार जब आपके पास TextView में स्थिर पाठ (डेटाबेस कॉल से उपयोगकर्ता इनपुट किए गए डेटा (जिसे कैपिटल नहीं किया जा सकता है)), तो मैं यह कैसे सुनिश्चित कर सकता हूं कि वे पूंजीकृत हैं?

धन्यवाद!


2
भविष्य के आगंतुकों के लिए ... कोटलिन में "abcd" .capitalize ()) का उपयोग करें
अमित तुमकुर

जवाबों:


181

मैं मानक जावा स्ट्रिंग हेरफेर के माध्यम से इसे पूरा करने में सक्षम होना चाहिए, कुछ भी नहीं Android या TextView विशिष्ट।

कुछ इस तरह:

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

हालांकि इसे पूरा करने के लिए शायद एक मिलियन तरीके हैं। स्ट्रिंग प्रलेखन देखें ।

EDITED मैंने जोड़ा.toLowerCase()


13
बस यह नोट करना चाहता था कि यह अंग्रेजी के लिए एक अच्छा समाधान है, लेकिन स्थानीयकरण के अनुकूल नहीं।
बिली लेज़ारो

70

निम्नलिखित TextView पर लागू नहीं होता है, लेकिन EditText के साथ काम करता है; फिर भी, यह कीबोर्ड से दर्ज किए गए पाठ पर लागू होता है, न कि सेटटेक्स्ट () के साथ लोड किए गए पाठ पर। अधिक विशिष्ट होने के लिए, यह कीबोर्ड में कैप्स को चालू करता है, और उपयोगकर्ता उसकी इच्छा पर इसे ओवरराइड कर सकता है।

android:inputType="textCapSentences"

या

TV.sname.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);

यह पहला अक्षर कैप करेगा।

या

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

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

79
यह TextView पर लागू नहीं होता है, लेकिन केवल EditText पर लागू होता है; फिर भी, यह कीबोर्ड से दर्ज किए गए पाठ पर लागू होता है, न कि सेटटेक्स्ट () से भरा हुआ पाठ। अधिक विशिष्ट होने के लिए, यह कीबोर्ड में कैप्स को चालू करता है, और उपयोगकर्ता उसकी इच्छा पर इसे ओवरराइड कर सकता है।
एलेक्स कोहेन

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

20

कोटलिन के लिए, बस कॉल करें

textview.text = string.capitalize()

3
मैंने सोचा होगा कि यह प्रत्येक शब्द को कैपिटल करेगा लेकिन यह वास्तव में केवल पहले शब्द के लिए काम कर रहा है।
स्कौआ

यदि आप इसका उपयोग बहुभाषी ऐप में कर रहे हैं, तो लोकल पास करना बेहतर बनाता है।
धर्मेंद्र प्रताप सिंह


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

परिणाम:

आई / पी brain ओ / पी ब्रेन

मैं / पी Brain and Health ओ / पी 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

स्वीकृत उत्तर अच्छा है, लेकिन यदि आप इसे एंड्रॉइड के टेक्स्ट व्यू से मान प्राप्त करने के लिए उपयोग कर रहे हैं, तो यह जांचना अच्छा होगा कि क्या स्ट्रिंग खाली है। यदि स्ट्रिंग खाली है, तो यह एक अपवाद फेंक देगा।

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

2

कोटलिन के लिए, यदि आप सुनिश्चित करना चाहते हैं कि प्रारूप "Aaaaaaaaaa" है, तो आप इसका उपयोग कर सकते हैं:

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

1

कृपया एक कस्टम टेक्स्ट व्यू बनाएं और इसका उपयोग करें:

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 को कैसे यूआई तत्व को ड्रैग एंड ड्रॉप के रूप में डिज़ाइन / एक्टिविटी / फ्रेगमेंट में प्रदर्शित कर सकता हूं?
कोस्तनोस

0

यहाँ मैंने इस विषय पर एक विस्तृत लेख लिखा है, क्योंकि हमारे पास कई विकल्प हैं, Android में Capitalize First Letter of String

जावा में स्ट्रिंग के पहले अक्षर को कैपिटलाइज़ करने की विधि

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

कोटलिन में स्ट्रिंग के पहले अक्षर को कैपिटलाइज़ करने की विधि

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 विशेषता का उपयोग करना

या आप इस विशेषता को XML में TextView या EditText में सेट कर सकते हैं

android:inputType="textCapSentences"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.