স্ট্রিংয়ে প্রতিটি শব্দের প্রথম অক্ষরকে কীভাবে মূলধন করা যায়


421

জাভাতে তৈরি এমন কোনও ফাংশন রয়েছে যা একটি স্ট্রিংয়ের প্রতিটি শব্দের প্রথম চরিত্রকে বড় করে তোলে এবং অন্যগুলিকে প্রভাবিত করে না?

উদাহরণ:

  • jon skeet -> Jon Skeet
  • miles o'Brien-> Miles O'Brien(বি মূলধন হিসাবে রয়ে গেছে, এটি শিরোনামের মামলার রায় দেয়)
  • old mcdonald-> Old Mcdonald*

* ( Old McDonaldএটিও সন্ধান করা হবে তবে আমি এটি স্মার্ট হবে বলে আশা করি না))

জাভা স্ট্রিং ডকুমেন্টেশনের একটি তাত্ক্ষণিক দৃষ্টিভঙ্গি কেবলমাত্র toUpperCase()এবং toLowerCase()যেগুলি অবশ্যই পছন্দসই আচরণ সরবরাহ করে না। স্বাভাবিকভাবেই, গুগলের ফলাফলগুলি সেই দুটি ফাংশনের দ্বারা প্রাধান্য পায়। মনে হচ্ছে এমন একটি চাকার মতো যা ইতিমধ্যে উদ্ভাবিত হয়েছে, তাই এটি জিজ্ঞাসা করতে আঘাত করতে পারেনি যাতে আমি ভবিষ্যতে এটি ব্যবহার করতে পারি।


18
কি হবে old mcdonald? ওটা হয়ে ওঠা উচিত Old McDonald?
বার্ট কায়ার্স

2
ফাংশনটি যে স্মার্ট হবে তা আমি আশা করি না। (যদিও আপনার যদি এটি থাকে তবে আমি এটি দেখতে পেরে খুশি হব)) সাদা স্থানের পরে প্রথম অক্ষরটি আপ করুন তবে বাকী অংশটি উপেক্ষা করুন।
উইলফুল উইজার্ড


1
আপনি কোনও অ্যালগরিদম খুঁজে পেতে সক্ষম হবেন না যেভাবে যাইহোক তথ্যের পরে নাম মূলধনকে সঠিকভাবে পরিচালনা করে ... যতক্ষণ না নামগুলির জোড়া রয়েছে, যার মধ্যে দুটিই ম্যাকডোনাল্ড এবং ম্যাকডোনাল্ডের মতো কোনও প্রদত্ত ব্যক্তির পক্ষে সঠিক হতে পারে কোনটি সঠিক ছিল তা জানার উপায় নেই। আপনি যা করেছেন তা করা ভাল, যদিও আপনি এখনও কিছু নাম ভুল পেয়ে যাবেন (ভন নিউম্যানের মতো)।
ডেভ ডুপ্লান্টিস

বার্গার কিং চেষ্টা করুন ...
ম্যাগনো সি

উত্তর:


732

WordUtils.capitalize(str)( অ্যাপাচি কমন্স-পাঠ্য থেকে )

(দ্রষ্টব্য: আপনার যদি প্রয়োজন "fOO BAr"হয় "Foo Bar"তবে তার capitalizeFully(..)পরিবর্তে ব্যবহার করুন)


5
আমি মনে করি আপনার অর্থ ওয়ার্ড ইউটিলস.ক্যাপিটালাইজ (স্ট্র)। বিশদ জন্য API দেখুন।
হ্যান্স ডোগজেন

84
কমন্স লাইব্রেরিগুলিতে উল্লেখ করা উত্তরগুলি সর্বদা ভোট দেওয়ার জন্য আমার দর্শন রাখছেন।
রবি ওয়ালাউ

11
প্রথম অক্ষরটিকে শব্দের সাথে ছোট হাতের অক্ষরে পরিবর্তন করতে মূলধনফুলি (স্ট্র) ব্যবহার করুন।
উমেশ রাজভান্ডারী

5
এই সমাধান কি আসলেই সঠিক ? এটা আমার মতে না! আপনি যদি "ল্যামবার্গিনী" কে মূলধন করতে চান তবে আপনি শেষ পর্যন্ত "লাম্বোরগিনি" চান। WordUtils.capitalizeFully(str)সমাধানও তাই ।
বাসজিরো

3
@ বাসযেরো এটি জিজ্ঞাসা করা প্রশ্নের সঠিক উত্তর। আমি একটি মন্তব্য হিসাবে সম্পূর্ণ সংস্করণ অন্তর্ভুক্ত করব।
বোঝো

229

যদি আপনি কেবল প্রথম শব্দের প্রথম অক্ষরকে মূলধনীকরণের বিষয়ে চিন্তিত হন:

private String capitalize(final String line) {
   return Character.toUpperCase(line.charAt(0)) + line.substring(1);
}

3
এটি কেবলমাত্র প্রথম শব্দের প্রথম অক্ষর পরিবর্তন করে
ক্রিজজ

28
প্রকৃতপক্ষে, এটি আমার উদ্দেশ্য ছিল।
নিক বোল্টন

13
@ ননবোল্টন - তবে এটি স্পষ্টভাবে প্রশ্নের অভিপ্রায় উপেক্ষা করে এবং এই উদাহরণে প্রদত্ত মামলার ক্ষেত্রে ব্যর্থ হয় - এবং এটি পূর্বে দেওয়া উত্তরের সাথে সামান্য বা কিছুই যোগ করে না!
ডেভিড ম্যানহিম

17
এই কোডের টুকরা ক্রাশ-নিরাপদ নয়! কল্পনা করুন lineনাল হয়ে
যাচ্ছেন

1
এখনও আসতে Character.toUpperCase (word.charAt (0)) + + word.substring (1) .toLowerCase ()
Exceptyon

72

নিম্নলিখিত স্থানটি কোনও স্থান বা অন্যান্য বিশেষ অক্ষরের নিকটে তাদের অবস্থানের উপর নির্ভর করে সমস্ত অক্ষরকে উপরের / লোয়ার ক্ষেত্রে রূপান্তর করে।

public static String capitalizeString(String string) {
  char[] chars = string.toLowerCase().toCharArray();
  boolean found = false;
  for (int i = 0; i < chars.length; i++) {
    if (!found && Character.isLetter(chars[i])) {
      chars[i] = Character.toUpperCase(chars[i]);
      found = true;
    } else if (Character.isWhitespace(chars[i]) || chars[i]=='.' || chars[i]=='\'') { // You can add other chars here
      found = false;
    }
  }
  return String.valueOf(chars);
}

আমি উন্নতি করতে এবং লুপ অবস্থার প্রক্রিয়া সহজ হবে: if(Character.isLetter(chars[i])) { if(!found) { chars[i] = Character.toUpperCase(chars[i]); } found = true; } else { found = false; }
ব্যাঙ্কার

@ ব্যান্সার, আপনার উদাহরণ সহ আপনি নিয়ন্ত্রণ করতে পারবেন না যে অক্ষরগুলি বড় হাতের অক্ষর দ্বারা অনুসরণ করা হবে না।
সত্য নরম

@ ট্রুইসফট, আমি আপনাকে বুঝতে পারি না। বড় হাতের অক্ষরের পরে কোন অক্ষর অনুসরণ করে তা আপনার কেন নিয়ন্ত্রণ করতে হবে? যেহেতু আমি বুঝতে পেরেছিলাম এটি গুরুত্বপূর্ণ যে পূর্ববর্তী চরিত্রটি কোনও চিঠি হবে না এবং আমার উদাহরণ এটি নিশ্চিত করে। আপনার যদি-অন্য-যদি ব্লকটি আমার আইফ-ব্লক দিয়ে প্রতিস্থাপন করুন এবং একটি পরীক্ষা চালান।
ব্যাঙ্কার

@TrueSoft, স্বচ্ছতার জন্য আমি নামান্তর হবে foundথেকে previousCharIsLetter
ব্যাঙ্কার

9
আমি এমন উত্তরগুলি পছন্দ করি যা কমন্স লাইব্রেরি ব্যবহার করে না, কারণ প্রতি একবারে আপনি এটি ব্যবহার করতে পারবেন না।
হেকম্যান

38

এই খুব সহজ উপায় চেষ্টা করুন

দেওয়া স্ট্রিং = "ম্যাম ভাল ছেলে"

public static String toTitleCase(String givenString) {
    String[] arr = givenString.split(" ");
    StringBuffer sb = new StringBuffer();

    for (int i = 0; i < arr.length; i++) {
        sb.append(Character.toUpperCase(arr[i].charAt(0)))
            .append(arr[i].substring(1)).append(" ");
    }          
    return sb.toString().trim();
}  

আউটপুট হবে: রাম ইজ গুড বয়


1
এই কোডটি আমাদের সার্ভারকে ক্রাশ করেছে: java.lang.StringIndexOutOfBoundsException: স্ট্রিং সূচকটি সীমার বাইরে নয়: 0
ক্রিজজ

32
@ ক্রিজজ্জ তাই কোডটি কমিট করবেন না যা আপনি পরীক্ষা করেননি ... আপনি যদি খালি স্ট্রিং সরবরাহ করেন তবে এটি ক্র্যাশ হয়ে যায়। তোমার দোষ, নীলমের নয়।
রিনিহার্ড

1
যদি শেষে কোনও স্থান থাকে তবে এটি ক্র্যাশ হয় তবে আমি স্পেসের সাথে প্রথমে ছাঁটা () বিভক্ত স্ট্রিং যুক্ত করলাম perfectlyএটি পুরোপুরি কাজ করেছিল
হনুমান

যদি কেউ এর কোটলিন সংস্করণ সন্ধান করছে, তা এখানে: স্ট্যাকওভারফ্লো.com
বাগগুলি ঘটেছে

16

আমি একটি স্ট্রিংয়ের সমস্ত শব্দকে মূলধন করতে একটি ছোট ক্লাস লিখেছি।

Ptionচ্ছিক multiple delimiters, প্রতিটি তার আচরণের সাথে (এর আগে কেসগুলি পূর্বে, পরে বা উভয় ক্ষেত্রেই কেসগুলি পরিচালনা করতে পারে O'Brian);

Locale; চ্ছিক ;

সঙ্গে বিরতি না Surrogate Pairs

সরাসরি নমুনা

আউটপুট:

====================================
 SIMPLE USAGE
====================================
Source: cApItAlIzE this string after WHITE SPACES
Output: Capitalize This String After White Spaces

====================================
 SINGLE CUSTOM-DELIMITER USAGE
====================================
Source: capitalize this string ONLY before'and''after'''APEX
Output: Capitalize this string only beforE'AnD''AfteR'''Apex

====================================
 MULTIPLE CUSTOM-DELIMITER USAGE
====================================
Source: capitalize this string AFTER SPACES, BEFORE'APEX, and #AFTER AND BEFORE# NUMBER SIGN (#)
Output: Capitalize This String After Spaces, BeforE'apex, And #After And BeforE# Number Sign (#)

====================================
 SIMPLE USAGE WITH CUSTOM LOCALE
====================================
Source: Uniforming the first and last vowels (different kind of 'i's) of the Turkish word D[İ]YARBAK[I]R (DİYARBAKIR) 
Output: Uniforming The First And Last Vowels (different Kind Of 'i's) Of The Turkish Word D[i]yarbak[i]r (diyarbakir) 

====================================
 SIMPLE USAGE WITH A SURROGATE PAIR 
====================================
Source: ab 𐐂c de à
Output: Ab 𐐪c De À

দ্রষ্টব্য: প্রথম অক্ষর সর্বদা বড় হয়ে যায় (যদি আপনি এটি না চান তবে উত্সটি সম্পাদনা করুন)।

দয়া করে আপনার মন্তব্যগুলি ভাগ করুন এবং বাগগুলি খুঁজে পেতে বা কোডটি উন্নত করতে আমাকে সহায়তা করুন ...

কোড:

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;

public class WordsCapitalizer {

    public static String capitalizeEveryWord(String source) {
        return capitalizeEveryWord(source,null,null);
    }

    public static String capitalizeEveryWord(String source, Locale locale) {
        return capitalizeEveryWord(source,null,locale);
    }

    public static String capitalizeEveryWord(String source, List<Delimiter> delimiters, Locale locale) {
        char[] chars; 

        if (delimiters == null || delimiters.size() == 0)
            delimiters = getDefaultDelimiters();                

        // If Locale specified, i18n toLowerCase is executed, to handle specific behaviors (eg. Turkish dotted and dotless 'i')
        if (locale!=null)
            chars = source.toLowerCase(locale).toCharArray();
        else 
            chars = source.toLowerCase().toCharArray();

        // First charachter ALWAYS capitalized, if it is a Letter.
        if (chars.length>0 && Character.isLetter(chars[0]) && !isSurrogate(chars[0])){
            chars[0] = Character.toUpperCase(chars[0]);
        }

        for (int i = 0; i < chars.length; i++) {
            if (!isSurrogate(chars[i]) && !Character.isLetter(chars[i])) {
                // Current char is not a Letter; gonna check if it is a delimitrer.
                for (Delimiter delimiter : delimiters){
                    if (delimiter.getDelimiter()==chars[i]){
                        // Delimiter found, applying rules...                       
                        if (delimiter.capitalizeBefore() && i>0 
                            && Character.isLetter(chars[i-1]) && !isSurrogate(chars[i-1]))
                        {   // previous character is a Letter and I have to capitalize it
                            chars[i-1] = Character.toUpperCase(chars[i-1]);
                        }
                        if (delimiter.capitalizeAfter() && i<chars.length-1 
                            && Character.isLetter(chars[i+1]) && !isSurrogate(chars[i+1]))
                        {   // next character is a Letter and I have to capitalize it
                            chars[i+1] = Character.toUpperCase(chars[i+1]);
                        }
                        break;
                    }
                } 
            }
        }
        return String.valueOf(chars);
    }


    private static boolean isSurrogate(char chr){
        // Check if the current character is part of an UTF-16 Surrogate Pair.  
        // Note: not validating the pair, just used to bypass (any found part of) it.
        return (Character.isHighSurrogate(chr) || Character.isLowSurrogate(chr));
    }       

    private static List<Delimiter> getDefaultDelimiters(){
        // If no delimiter specified, "Capitalize after space" rule is set by default. 
        List<Delimiter> delimiters = new ArrayList<Delimiter>();
        delimiters.add(new Delimiter(Behavior.CAPITALIZE_AFTER_MARKER, ' '));
        return delimiters;
    } 

    public static class Delimiter {
        private Behavior behavior;
        private char delimiter;

        public Delimiter(Behavior behavior, char delimiter) {
            super();
            this.behavior = behavior;
            this.delimiter = delimiter;
        }

        public boolean capitalizeBefore(){
            return (behavior.equals(Behavior.CAPITALIZE_BEFORE_MARKER)
                    || behavior.equals(Behavior.CAPITALIZE_BEFORE_AND_AFTER_MARKER));
        }

        public boolean capitalizeAfter(){
            return (behavior.equals(Behavior.CAPITALIZE_AFTER_MARKER)
                    || behavior.equals(Behavior.CAPITALIZE_BEFORE_AND_AFTER_MARKER));
        }

        public char getDelimiter() {
            return delimiter;
        }
    }

    public static enum Behavior {
        CAPITALIZE_AFTER_MARKER(0),
        CAPITALIZE_BEFORE_MARKER(1),
        CAPITALIZE_BEFORE_AND_AFTER_MARKER(2);                      

        private int value;          

        private Behavior(int value) {
            this.value = value;
        }

        public int getValue() {
            return value;
        }           
    } 

15
String toBeCapped = "i want this sentence capitalized";

String[] tokens = toBeCapped.split("\\s");
toBeCapped = "";

for(int i = 0; i < tokens.length; i++){
    char capLetter = Character.toUpperCase(tokens[i].charAt(0));
    toBeCapped +=  " " + capLetter + tokens[i].substring(1);
}
toBeCapped = toBeCapped.trim();

1
হুম, আমি মনে করি লুপের জন্য দ্বিতীয় লাইনটি পড়তে হবে: টু বি কেপড + = "" + ক্যাপলেট লেটার + টোকেনস [i] .সুবস্ট্রিং (1, টোকেন [i]। দৈর্ঘ্য ());
জেঞ্জেলসমা

1
তবে এই সমাধানটি শুরুতে একটি সাদা স্থান যুক্ত করবে। সুতরাং আপনার বাম ট্রিম করার প্রয়োজন হতে পারে।
কমলাকান্নান জে

13

আমি জাভা 8 এ একটি সমাধান করেছি যা আইএমএইচও আরও পঠনযোগ্য।

public String firstLetterCapitalWithSingleSpace(final String words) {
    return Stream.of(words.trim().split("\\s"))
    .filter(word -> word.length() > 0)
    .map(word -> word.substring(0, 1).toUpperCase() + word.substring(1))
    .collect(Collectors.joining(" "));
}

এই সমাধানের মূল বক্তব্যটি এখানে পাওয়া যাবে: https://gist.github.com/Hylke1982/166a792313c5e2df9d31


10

ব্যবহার org.apache.commons.lang.StringUtilsএটি খুব সহজ করে তোলে।

capitalizeStr = StringUtils.capitalize(str);

2
@Ash StringUtils.capitalise(str)অসমর্থিত হয়েছে। দেখুন: commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/…
নাভিগাট্রন

এটি কেবল স্ট্রিংয়ের প্রথম চরকে স্ট্রিংয়ের প্রতিটি শব্দের প্রথম চর নয় capital WordUtils শুধুমাত্র অবচিত হয়েছে কারণ এটি কমন্স ল্যাঙ থেকে কমন্স টেক্সট থেকে সরানো হয়েছে commons.apache.org/proper/commons-text/javadocs/api-release/org/...
opticyclic

বাহ্যিক গ্রন্থাগার সামান্য কাজের জন্য ব্যবহার করা ভাল ধারণা নয়।
স্ট্যাক ওভারফ্লো

7

এই সাধারণ কোড সহ :

String example="hello";

example=example.substring(0,1).toUpperCase()+example.substring(1, example.length());

System.out.println(example);

ফলাফল: হ্যালো


6
হেলোর কী হবে এটি হেলোকে প্রত্যাশা করে তবে হ্যালো প্রত্যাশিত তাই আপনি দ্বিতীয় সাবস্ট্রিং
ত্রৈলকর্দশী

5

আমি নিম্নলিখিত ফাংশন ব্যবহার করছি। আমি মনে করি এটি পারফরম্যান্সে আরও দ্রুত।

public static String capitalize(String text){
    String c = (text != null)? text.trim() : "";
    String[] words = c.split(" ");
    String result = "";
    for(String w : words){
        result += (w.length() > 1? w.substring(0, 1).toUpperCase(Locale.US) + w.substring(1, w.length()).toLowerCase(Locale.US) : w) + " ";
    }
    return result.trim();
}

3
আপনি যখন ++
চিটগোکس

2
আপনি কেন এটি দ্রুত বলে মনে করেন?
পিটার মর্টেনসেন

5

জাভা 9+ থেকে

আপনি এটির String::replaceAllমতো ব্যবহার করতে পারেন :

public static void upperCaseAllFirstCharacter(String text) {
    String regex = "\\b(.)(.*?)\\b";
    String result = Pattern.compile(regex).matcher(text).replaceAll(
            matche -> matche.group(1).toUpperCase() + matche.group(2)
    );

    System.out.println(result);
}

উদাহরণ:

upperCaseAllFirstCharacter("hello this is Just a test");

আউটপুট

Hello This Is Just A Test

4

আপনার স্ট্রিংকে শব্দগুলিতে বিভক্ত করতে স্প্লিট পদ্ধতিটি ব্যবহার করুন, তারপরে প্রতিটি শব্দের মূলধন করতে বিল্ট ইন স্ট্রিং ফাংশনগুলি ব্যবহার করুন, তারপরে একসাথে সংযোজন করুন।

সিউডো কোড (ইশ)

string = "the sentence you want to apply caps to";
words = string.split(" ") 
string = ""
for(String w: words)

//This line is an easy way to capitalize a word
    word = word.toUpperCase().replace(word.substring(1), word.substring(1).toLowerCase())

    string += word

শেষের স্ট্রিংয়ের মধ্যে এমন কিছু দেখাচ্ছে যা "আপনি ক্যাপস প্রয়োগ করতে চান এমন বাক্য"


4

আপনার যদি শিরোনাম মূলধন প্রয়োজন হয় এটি কার্যকর হতে পারে। এটি " "নির্দিষ্ট স্ট্রিং যেমন "a"বা হিসাবে ব্যতীত সীমিত প্রতিটি স্ট্রিংয়ের মূলধন করে "the"। দেরি হয়ে গেছে বলে আমি এখনও এটি চালাইনি, যদিও ভাল হওয়া উচিত। StringUtils.join()এক পর্যায়ে অ্যাপাচি কমন্স ব্যবহার করে । আপনি যদি চান তবে এটি একটি সরল লুপের সাথে প্রতিস্থাপন করতে পারেন।

private static String capitalize(String string) {
    if (string == null) return null;
    String[] wordArray = string.split(" "); // Split string to analyze word by word.
    int i = 0;
lowercase:
    for (String word : wordArray) {
        if (word != wordArray[0]) { // First word always in capital
            String [] lowercaseWords = {"a", "an", "as", "and", "although", "at", "because", "but", "by", "for", "in", "nor", "of", "on", "or", "so", "the", "to", "up", "yet"};
            for (String word2 : lowercaseWords) {
                if (word.equals(word2)) {
                    wordArray[i] = word;
                    i++;
                    continue lowercase;
                }
            }
        }
        char[] characterArray = word.toCharArray();
        characterArray[0] = Character.toTitleCase(characterArray[0]);
        wordArray[i] = new String(characterArray);
        i++;
    }
    return StringUtils.join(wordArray, " "); // Re-join string
}

স্ট্রিংটিতে এর দ্বিগুণ স্থান থাকলে ব্রেক হয় যা ইনপুটটির জন্য বোবা, তবে এফওয়াইআই।
জাস্টট্রিইং

4
public static String toTitleCase(String word){
    return Character.toUpperCase(word.charAt(0)) + word.substring(1);
}

public static void main(String[] args){
    String phrase = "this is to be title cased";
    String[] splitPhrase = phrase.split(" ");
    String result = "";

    for(String word: splitPhrase){
        result += toTitleCase(word) + " ";
    }
    System.out.println(result.trim());
}

স্ট্যাক ওভারফ্লোতে স্বাগতম! সাধারণত, উত্তরগুলি আরও কার্যকর হয় যদি সেগুলিতে কোডটি কী করা উচিত এবং কেন এটি অন্যকে পরিচয় করিয়ে না দিয়ে সমস্যার সমাধান করে তার ব্যাখ্যা অন্তর্ভুক্ত করে।
নিউরন


3
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));   

System.out.println("Enter the sentence : ");

try
{
    String str = br.readLine();
    char[] str1 = new char[str.length()];

    for(int i=0; i<str.length(); i++)
    {
        str1[i] = Character.toLowerCase(str.charAt(i));
    }

    str1[0] = Character.toUpperCase(str1[0]);
    for(int i=0;i<str.length();i++)
    {
        if(str1[i] == ' ')
        {                   
            str1[i+1] =  Character.toUpperCase(str1[i+1]);
        }
        System.out.print(str1[i]);
    }
}
catch(Exception e)
{
    System.err.println("Error: " + e.getMessage());
}

এটি আমার মতো নবজাতকের পক্ষে সবচেয়ে সহজ, মৌলিক এবং সেরা উত্তর!
abhishah901

3

আমি স্ট্রিংয়ে শব্দকে বড় করার জন্য আরও একটি সমাধান যুক্ত করার সিদ্ধান্ত নিয়েছি:

  • শব্দগুলি এখানে সংলগ্ন বর্ণ-বা অঙ্কের অক্ষর হিসাবে সংজ্ঞায়িত করা হয়;
  • সরোগেট জোড়া পাশাপাশি সরবরাহ করা হয়;
  • কার্য সম্পাদনের জন্য কোডটি অনুকূলিত করা হয়েছে; এবং
  • এটি এখনও কমপ্যাক্ট।

ফাংশন:

public static String capitalize(String string) {
  final int sl = string.length();
  final StringBuilder sb = new StringBuilder(sl);
  boolean lod = false;
  for(int s = 0; s < sl; s++) {
    final int cp = string.codePointAt(s);
    sb.appendCodePoint(lod ? Character.toLowerCase(cp) : Character.toUpperCase(cp));
    lod = Character.isLetterOrDigit(cp);
    if(!Character.isBmpCodePoint(cp)) s++;
  }
  return sb.toString();
}

উদাহরণ কল:

System.out.println(capitalize("An à la carte StRiNg. Surrogate pairs: 𐐪𐐪."));

ফলাফল:

An À La Carte String. Surrogate Pairs: 𐐂𐐪.

3

ব্যবহার করুন:

    String text = "jon skeet, miles o'brien, old mcdonald";

    Pattern pattern = Pattern.compile("\\b([a-z])([\\w]*)");
    Matcher matcher = pattern.matcher(text);
    StringBuffer buffer = new StringBuffer();
    while (matcher.find()) {
        matcher.appendReplacement(buffer, matcher.group(1).toUpperCase() + matcher.group(2));
    }
    String capitalized = matcher.appendTail(buffer).toString();
    System.out.println(capitalized);

টুএলওয়ারকেসে -> "ম্যাচার ম্যাচারার = প্যাটার্ন.ম্যাচার (টেক্সট.টোলওয়ারকেস ()) দিয়ে পুরোপুরি কাজ করে;" ("জন
ডিওএই

3

প্রথম শব্দের প্রথম অক্ষরকে মূলধন রূপান্তরিত করার অনেকগুলি উপায় রয়েছে। আমার একটা পরিকল্পনা আছে. এটা খুবই সাধারণ:

public String capitalize(String str){

     /* The first thing we do is remove whitespace from string */
     String c = str.replaceAll("\\s+", " ");
     String s = c.trim();
     String l = "";

     for(int i = 0; i < s.length(); i++){
          if(i == 0){                              /* Uppercase the first letter in strings */
              l += s.toUpperCase().charAt(i);
              i++;                                 /* To i = i + 1 because we don't need to add               
                                                    value i = 0 into string l */
          }

          l += s.charAt(i);

          if(s.charAt(i) == 32){                   /* If we meet whitespace (32 in ASCII Code is whitespace) */
              l += s.toUpperCase().charAt(i+1);    /* Uppercase the letter after whitespace */
              i++;                                 /* Yo i = i + 1 because we don't need to add
                                                   value whitespace into string l */
          }        
     }
     return l;
}

একটি উত্তর যুক্ত করার চেষ্টা করার জন্য ধন্যবাদ। এটি একটি যুক্তিসঙ্গত ধারণা, তবে নোট করুন যে এখানে ইতিমধ্যে কিছু কাজ করে এমন মৌলিক ফাংশন রয়েছে, এবং কোড যা আপনার সরবরাহ করে যা একইভাবে এটি করে এবং স্বীকৃত উত্তরগুলি ইতিমধ্যে সেগুলির সমস্তটিকে খুব স্পষ্টভাবে রূপরেখা দেয়।
ডেভিড ম্যানহিম

2
  package com.test;

 /**
   * @author Prasanth Pillai
   * @date 01-Feb-2012
   * @description : Below is the test class details
   * 
   * inputs a String from a user. Expect the String to contain spaces and    alphanumeric     characters only.
   * capitalizes all first letters of the words in the given String.
   * preserves all other characters (including spaces) in the String.
   * displays the result to the user.
   * 
   * Approach : I have followed a simple approach. However there are many string    utilities available 
   * for the same purpose. Example : WordUtils.capitalize(str) (from apache commons-lang)
   *
   */
  import java.io.BufferedReader;
  import java.io.IOException;
  import java.io.InputStreamReader;

  public class Test {

public static void main(String[] args) throws IOException{
    System.out.println("Input String :\n");
    InputStreamReader converter = new InputStreamReader(System.in);
    BufferedReader in = new BufferedReader(converter);
    String inputString = in.readLine();
    int length = inputString.length();
    StringBuffer newStr = new StringBuffer(0);
    int i = 0;
    int k = 0;
    /* This is a simple approach
     * step 1: scan through the input string
     * step 2: capitalize the first letter of each word in string
     * The integer k, is used as a value to determine whether the 
     * letter is the first letter in each word in the string.
     */

    while( i < length){
        if (Character.isLetter(inputString.charAt(i))){
            if ( k == 0){
            newStr = newStr.append(Character.toUpperCase(inputString.charAt(i)));
            k = 2;
            }//this else loop is to avoid repeatation of the first letter in output string 
            else {
            newStr = newStr.append(inputString.charAt(i));
            }
        } // for the letters which are not first letter, simply append to the output string. 
        else {
            newStr = newStr.append(inputString.charAt(i));
            k=0;
        }
        i+=1;           
    }
    System.out.println("new String ->"+newStr);
    }
}

2

এখানে একটি সাধারণ ফাংশন

public static String capEachWord(String source){
    String result = "";
    String[] splitString = source.split(" ");
    for(String target : splitString){
        result += Character.toUpperCase(target.charAt(0))
                + target.substring(1) + " ";
    }
    return result.trim();
}

1
দীর্ঘ স্ট্রিং তৈরির জন্য স্ট্রিং-কনককশন ব্যবহার করবেন না, এটি বেদনাদায়কভাবে ধীর: stackoverflow.com/questions/15177987/…
লুকাশ নুথ

2

এটি এটি করার অন্য একটি উপায়:

private String capitalize(String line)
{
    StringTokenizer token =new StringTokenizer(line);
    String CapLine="";
    while(token.hasMoreTokens())
    {
        String tok = token.nextToken().toString();
        CapLine += Character.toUpperCase(tok.charAt(0))+ tok.substring(1)+" ";        
    }
    return CapLine.substring(0,CapLine.length()-1);
}

2

IntiCap এর জন্য পুনরায় ব্যবহারযোগ্য পদ্ধতি:

    public class YarlagaddaSireeshTest{

    public static void main(String[] args) {
        String FinalStringIs = "";
        String testNames = "sireesh yarlagadda test";
        String[] name = testNames.split("\\s");

        for(String nameIs :name){
            FinalStringIs += getIntiCapString(nameIs) + ",";
        }
        System.out.println("Final Result "+ FinalStringIs);
    }

    public static String getIntiCapString(String param) {
        if(param != null && param.length()>0){          
            char[] charArray = param.toCharArray(); 
            charArray[0] = Character.toUpperCase(charArray[0]); 
            return new String(charArray); 
        }
        else {
            return "";
        }
    }
}

2

এখানে আমার সমাধান।

আমি আজ রাতে এই সমস্যাটি পেরিয়েছি এবং এটি অনুসন্ধান করার সিদ্ধান্ত নিয়েছি। আমি প্রায় সেখানেই ছিলাম নীলম সিংহের একটি উত্তর পেয়েছি, সুতরাং আমি বিষয়টি (ফাঁকা স্ট্রিংগুলিতে ভেঙে) সমাধান করার সিদ্ধান্ত নিয়েছি এবং একটি সিস্টেম ক্র্যাশ করেছে।

আপনি যে পদ্ধতিটির সন্ধান করছেন তার নাম দেওয়া হয়েছে capString(String s) নীচে দেওয়া হয়েছে। এটি "এটি কেবল সকাল 5 টা" এ "এটি কেবলমাত্র 5am এখানে" তে পরিণত হয়।

কোডটি বেশ ভাল মন্তব্য করা হয়েছে, তাই উপভোগ করুন।

package com.lincolnwdaniel.interactivestory.model;

    public class StringS {

    /**
     * @param s is a string of any length, ideally only one word
     * @return a capitalized string.
     * only the first letter of the string is made to uppercase
     */
    public static String capSingleWord(String s) {
        if(s.isEmpty() || s.length()<2) {
            return Character.toUpperCase(s.charAt(0))+"";
        } 
        else {
            return Character.toUpperCase(s.charAt(0)) + s.substring(1);
        }
    }

    /**
     *
     * @param s is a string of any length
     * @return a title cased string.
     * All first letter of each word is made to uppercase
     */
    public static String capString(String s) {
        // Check if the string is empty, if it is, return it immediately
        if(s.isEmpty()){
            return s;
        }

        // Split string on space and create array of words
        String[] arr = s.split(" ");
        // Create a string buffer to hold the new capitalized string
        StringBuffer sb = new StringBuffer();

        // Check if the array is empty (would be caused by the passage of s as an empty string [i.g "" or " "],
        // If it is, return the original string immediately
        if( arr.length < 1 ){
            return s;
        }

        for (int i = 0; i < arr.length; i++) {
            sb.append(Character.toUpperCase(arr[i].charAt(0)))
                    .append(arr[i].substring(1)).append(" ");
        }
        return sb.toString().trim();
    }
}

2

1. জাভা 8 স্ট্রিম

public static String capitalizeAll(String str) {
    if (str == null || str.isEmpty()) {
        return str;
    }

    return Arrays.stream(str.split("\\s+"))
            .map(t -> t.substring(0, 1).toUpperCase() + t.substring(1))
            .collect(Collectors.joining(" "));
}

উদাহরণ:

System.out.println(capitalizeAll("jon skeet")); // Jon Skeet
System.out.println(capitalizeAll("miles o'Brien")); // Miles O'Brien
System.out.println(capitalizeAll("old mcdonald")); // Old Mcdonald
System.out.println(capitalizeAll(null)); // null

জন্য foo bARকরতে Foo Bar, প্রতিস্থাপন map()নিম্নলিখিত সঙ্গে পদ্ধতি:

.map(t -> t.substring(0, 1).toUpperCase() + t.substring(1).toLowerCase())

String.replaceAll()(জাভা 9+)

ublic static String capitalizeAll(String str) {
    if (str == null || str.isEmpty()) {
        return str;
    }

    return Pattern.compile("\\b(.)(.*?)\\b")
            .matcher(str)
            .replaceAll(match -> match.group(1).toUpperCase() + match.group(2));
}

উদাহরণ:

System.out.println(capitalizeAll("12 ways to learn java")); // 12 Ways To Learn Java
System.out.println(capitalizeAll("i am atta")); // I Am Atta
System.out.println(capitalizeAll(null)); // null

3. অ্যাপাচি কমন্স পাঠ্য

System.out.println(WordUtils.capitalize("love is everywhere")); // Love Is Everywhere
System.out.println(WordUtils.capitalize("sky, sky, blue sky!")); // Sky, Sky, Blue Sky!
System.out.println(WordUtils.capitalize(null)); // null

শিরোনামের জন্য:

System.out.println(WordUtils.capitalizeFully("fOO bAR")); // Foo Bar
System.out.println(WordUtils.capitalizeFully("sKy is BLUE!")); // Sky Is Blue!

বিশদ জন্য, এই টিউটোরিয়াল চেকআউট ।




1
package corejava.string.intern;

import java.io.DataInputStream;

import java.util.ArrayList;

/*
 * wap to accept only 3 sentences and convert first character of each word into upper case
 */

public class Accept3Lines_FirstCharUppercase {

    static String line;
    static String words[];
    static ArrayList<String> list=new ArrayList<String>();

    /**
     * @param args
     */
    public static void main(String[] args) throws java.lang.Exception{

        DataInputStream read=new DataInputStream(System.in);
        System.out.println("Enter only three sentences");
        int i=0;
        while((line=read.readLine())!=null){
            method(line);       //main logic of the code
            if((i++)==2){
                break;
            }
        }
        display();
        System.out.println("\n End of the program");

    }

    /*
     * this will display all the elements in an array
     */
    public static void display(){
        for(String display:list){
            System.out.println(display);
        }
    }

    /*
     * this divide the line of string into words 
     * and first char of the each word is converted to upper case
     * and to an array list
     */
    public static void method(String lineParam){
        words=line.split("\\s");
        for(String s:words){
            String result=s.substring(0,1).toUpperCase()+s.substring(1);
            list.add(result);
        }
    }

}

1

আপনি যদি পেয়ারা পছন্দ করেন ...

String myString = ...;

String capWords = Joiner.on(' ').join(Iterables.transform(Splitter.on(' ').omitEmptyStrings().split(myString), new Function<String, String>() {
    public String apply(String input) {
        return Character.toUpperCase(input.charAt(0)) + input.substring(1);
    }
}));

1
String toUpperCaseFirstLetterOnly(String str) {
    String[] words = str.split(" ");
    StringBuilder ret = new StringBuilder();
    for(int i = 0; i < words.length; i++) {
        ret.append(Character.toUpperCase(words[i].charAt(0)));
        ret.append(words[i].substring(1));
        if(i < words.length - 1) {
            ret.append(' ');
        }
    }
    return ret.toString();
}

1

সংক্ষিপ্ত এবং সুনির্দিষ্ট উপায় নিম্নরূপ:

String name = "test";

name = (name.length() != 0) ?name.toString().toLowerCase().substring(0,1).toUpperCase().concat(name.substring(1)): name;
--------------------
Output
--------------------
Test
T 
empty
--------------------

যদি আপনি চেষ্টা করে নামের মানটিকে তিনটি মানের পরিবর্তিত করেন তবে এটি ত্রুটি ছাড়াই কাজ করে। ত্রুটি মুক্ত।


এটি যদি একাধিক শব্দের থেকে বেশি হয়
ভাগ্যবানুয় 73৩
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.