স্ট্রিং কে টাইটেল কেসে রূপান্তর করার জন্য কি কোনও পদ্ধতি আছে?


102

কোনও স্ট্রিংকে শিরোনাম কেস ফর্ম্যাটে রূপান্তর করতে কোনও বিল্ট ইন মেথড রয়েছে কি?


4
প্রত্যেকে এই প্রশ্নটি পড়ছেন: সাবধান হন যে শীর্ষস্থানীয়দের অনেকেই উত্তর দিয়েছেন এখানে সমস্ত ভাষার জন্য সঠিকভাবে কাজ করবেন না। আইসিইউ 4 জ এর মতো সঠিক শিরোনাম সংগ্রহের জন্য আপনার একটি আই 18 এন-সচেতন গ্রন্থাগার প্রয়োজন (ড্যানিয়েল এফ এর উত্তর দেখুন)।
এসএফসিসি

উত্তর:


106

অ্যাপাচি কমন্স স্ট্রিং ইউটিলস.ক্যাপিটালাইজ () বা কমন্সের পাঠ্য ওয়ার্ডটিল

যেমন: ওয়ার্ড ইউটিলস ডক WordUtils.capitalize("i am FINE") = "I Am FINE"থেকে


15
ওয়ার্ড ইউটিলস.ক্যাপিটালাইজ ফুলি () যা দেয় তা আমার পক্ষে আরও ভাল ছিল: ওয়ার্ড ইউটিলস.ক্যাপিটালাইফুলি ("আমি ফাইন আছি") = "আমি ভাল আছি"
এআইএনটোয়

4
কেবলমাত্র একটি সামান্য আপডেট, ওয়ার্ডটিলগুলি কমন্স পাঠ্যে চলে গেছে এবং কমন্স ল্যাং
অবহেলা

StringUtils.capitalise()
বসন্তেও

@ ওরেঞ্জডগ আপনার মানে capitalize()?
টাইলার

61

জাভার স্ট্রিং ক্লাসে কোনও ক্যাপিটালাইজ () বা শিরোনামক্যাস () পদ্ধতি নেই। আপনার দুটি পছন্দ আছে:

 StringUtils.capitalize(null)  = null
 StringUtils.capitalize("")    = ""
 StringUtils.capitalize("cat") = "Cat"
 StringUtils.capitalize("cAt") = "CAt"
 StringUtils.capitalize("'cat'") = "'cat'"
  • টাইটেলকেসে () আরও স্থিতি সহায়ক পদ্ধতি লিখুন ()

নমুনা বাস্তবায়ন

public static String toTitleCase(String input) {
    StringBuilder titleCase = new StringBuilder(input.length());
    boolean nextTitleCase = true;

    for (char c : input.toCharArray()) {
        if (Character.isSpaceChar(c)) {
            nextTitleCase = true;
        } else if (nextTitleCase) {
            c = Character.toTitleCase(c);
            nextTitleCase = false;
        }

        titleCase.append(c);
    }

    return titleCase.toString();
}

পরীক্ষা ক্ষেত্রে

    System.out.println(toTitleCase("string"));
    System.out.println(toTitleCase("another string"));
    System.out.println(toTitleCase("YET ANOTHER STRING"));

ফলাফল:

স্ট্রিং
আরেকটি স্ট্রিং
অন্য যেহেতু STRING

4
এটি একটি দুর্দান্ত সামান্য রুটিন তবে এটি স্ট্রিংস যে নামগুলির প্রতিনিধিত্ব করতে পারে তার বেশি সাধারণ ক্ষেত্রে ব্যর্থ হয়। এই ক্ষেত্রে, অ্যাসিস্ট্রোফস এবং হাইফেনগুলির পরেও মূলধনটির প্রয়োজন হয়। যেমন ও'কনোর এবং জে উইলকস-বুথ। অবশ্যই, অন্যান্য ভাষার অতিরিক্ত শিরোনাম ক্ষেত্রে বিধি থাকতে পারে।
স্কটব

... যদি এটি অন্তর্ভুক্ত করতে যাচ্ছিল, তবে বর্তমান শব্দটির একটি নাম থাকলে এটির জন্য পুরো অভিধান অনুসন্ধানের প্রয়োজন হবে না? এটি যে কোনও একটি পদ্ধতির জন্য কিছুটা বেশি মনে হয়।
এমএমজেজেড

এই কোডটি প্রায় জরিমানা কারণ কিছু নামের মধ্যে মারিয়া দেল কারমেন, মারিয়া দা সিলভা, মারিয়া দেলা স্যালুট ইত্যাদি ইত্যাদির মতো প্রপোসিটোন থাকতে পারে কোডরেঙ্ক
জুনিয়র মেহে

এস্ট্রোফের সাথে কি এই ব্রেক হয় না? উদাহরণস্বরূপ ও'ব্রায়ান সম্পর্কে কী।
sproketboy

4
দ্রষ্টব্য: অভ্যন্তরীণভাবে ব্যবহৃত অভ্যন্তরীণভাবে পুনরায় আকার char[]না দেওয়ার জন্য StringBuilderআমি ব্যবহারের পরামর্শ দিচ্ছিnew StringBuilder(input.length())
লিনো

39

আমি যদি আমার সমাধান জমা দিতে পারি ...

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

আমার রুটিনের একটি প্রধান সীমাবদ্ধতা হ'ল এটি এই ধারণাটি তৈরি করে যে "শিরোনাম কেস" সমস্ত লোকেলের জন্য সমানভাবে সংজ্ঞায়িত হয়েছে এবং আমি যে একই কেস কনভেনশনগুলি ব্যবহার করেছি তার দ্বারা প্রতিনিধিত্ব করা হয় এবং তাই এটি ডিএফএ কোডের তুলনায় কম কার্যকর।

public static String toDisplayCase(String s) {

    final String ACTIONABLE_DELIMITERS = " '-/"; // these cause the character following
                                                 // to be capitalized
    
    StringBuilder sb = new StringBuilder();
    boolean capNext = true;

    for (char c : s.toCharArray()) {
        c = (capNext)
                ? Character.toUpperCase(c)
                : Character.toLowerCase(c);
        sb.append(c);
        capNext = (ACTIONABLE_DELIMITERS.indexOf((int) c) >= 0); // explicit cast not needed
    }
    return sb.toString();
}

পরীক্ষার মূল্য

একটি স্ট্রিং

মার্টিন ওমামলাই

জন উইলকস-বুথ

অন্য যেহেতু STRING

আউটপুটস

একটি স্ট্রিং

মার্টিন ও'ম্যালি

জন উইলকস-বুথ

তবুও আরেকটি স্ট্রিং


ig এর মতো লিগাচারের সাথে কাজ করবে না, যার বড় হাতের অক্ষর LJ তবে টাইটলেজ Lj Lj Character.toTitleCaseপরিবর্তে ব্যবহার করুন।
মিহি

@ মিমি: অন্যান্য বিশেষায়িত নিয়মের সাথেও কাজ করবে না, যেমন। ম্যাকনামারা বা ম্যাকডোনাল্ডের মতো পদবি
স্কটব

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

(চাই না) এর ফলেও কি "তার" "তার" হয়ে উঠবে?
allicarn

এটা সত্যি. এটি নাম ক্ষেত্রগুলিতে ভাল কাজ করে তবে যেমন আপনি উল্লেখ করেছেন, সাধারণ গদ্যের প্রতি নয়। এটি এমনকি সমস্ত নাম, বিশেষত ভলকানস (টি'পাউয়ের পরিবর্তে টি'পাউ) তে ভাল কাজ করে না।
স্কটব

21

অ্যাপাচি কমন্স থেকে ওয়ার্ডUtils.capitalizeFully () ব্যবহার করুন ।

WordUtils.capitalizeFully(null)        = null
WordUtils.capitalizeFully("")          = ""
WordUtils.capitalizeFully("i am FINE") = "I Am Fine"

4
চমৎকার সমাধান! ধন্যবাদ! তবে এটি সময়ের 100% কাজ করে না, কারণ এটি এই শিরোনামে উদাহরণস্বরূপ "ক": "এটি একটি শিরোনাম" হিসাবে মূলধন করে। ইংলিশ.স্ট্যাকেক্সেঞ্জার.কম / সেকশনস / ১৪/২ দেখুন । আপনি কি এমন কোনও লাইব্রেরি জানেন যা এটির সাথে সম্পর্কিত?
Eirik W

10

আপনি এপাচি কমন্স ল্যাংগুলি ব্যবহার করতে পারেন:

WordUtils.capitalizeFully("this is a text to be capitalize")

আপনি এখানে জাভা ডকটি খুঁজে পেতে পারেন: ওয়ার্ড ইউটেলস.ক্যাপিটালাইজুল জাভা ডক

এবং আপনি যদি বিশ্বের ব্যবহার করতে পারেন এমন জায়গাগুলির মধ্যে স্থানগুলি সরাতে চান:

StringUtils.remove(WordUtils.capitalizeFully("this is a text to be capitalize")," ")

আপনি স্ট্রিং স্ট্রিংটিলস.রেভ জাভা ডকটির জন্য জাভা ডকটি সন্ধান করতে পারেন

আমি এই সাহায্য আশা করি।


5

আপনি যদি সর্বশেষের ইউনিকোড স্ট্যান্ডার্ড অনুসারে সঠিক উত্তর চান তবে আপনার আইকিউ 4 জ ব্যবহার করা উচিত।

UCharacter.toTitleCase(Locale.US, "hello world", null, 0);

নোট করুন যে এটি স্থানীয় সংবেদনশীল।

এপি ডকুমেন্টেশন

বাস্তবায়ন


এছাড়াও নতুন আইসিইউ 4 জে এপিআই কেস ম্যাপ দেখুন: আইসিইউ-
ibm

অ্যানড্রয়েড এপিআই স্তরের 24 এও উপলব্ধ: ডেভেলপার.অ্যান্ড্রয়েড.
com

3

@ ডিএফএ এবং @ স্কটব এর উত্তরের উপর ভিত্তি করে এখানে আরও কিছু দেওয়া হয়েছে যা কোনও অক্ষর / অঙ্কের অক্ষর পরিচালনা করে:

public final class TitleCase {

    public static String toTitleCase(String input) {

        StringBuilder titleCase = new StringBuilder(input.length());
        boolean nextTitleCase = true;

        for (char c : input.toLowerCase().toCharArray()) {
            if (!Character.isLetterOrDigit(c)) {
                nextTitleCase = true;
            } else if (nextTitleCase) {
                c = Character.toTitleCase(c);
                nextTitleCase = false;
            }
            titleCase.append(c);
        }

        return titleCase.toString();
    }

}

প্রদত্ত ইনপুট:

মেরি NNN ও'কনিয়ে-ইউএসলিক

আউটপুট হয়

মেরি অ্যান ও'কনিয়ে-liস্লিক


2

এটি স্নাপকেসকে লোয়ার ক্যামেলকেসে রূপান্তর করতে আমি লিখেছিলাম তবে প্রয়োজনীয়তার ভিত্তিতে সহজেই সামঞ্জস্য করা যায়

private String convertToLowerCamel(String startingText)
{
    String[] parts = startingText.split("_");
    return parts[0].toLowerCase() + Arrays.stream(parts)
                    .skip(1)
                    .map(part -> part.substring(0, 1).toUpperCase() + part.substring(1).toLowerCase())
                    .collect(Collectors.joining());
}

আপনার উত্তরটি কবজির মতো কাজ করে, তবে, সমাধানটি একক শব্দের ক্রমটি পরিচালনা করবে বলে মনে হচ্ছে না, যদি শর্তটি যথেষ্ট হয়।
yashgarg1232

1

আমি জানি এটি একটি প্রবীণ, তবে সাধারণ উত্তরটি বহন করে না, আমার কোডিংয়ের জন্য আমার এই পদ্ধতির দরকার ছিল তাই আমি এখানে যুক্ত করলাম, সহজ ব্যবহার।

public static String toTitleCase(String input) {
    input = input.toLowerCase();
    char c =  input.charAt(0);
    String s = new String("" + c);
    String f = s.toUpperCase();
    return f + input.substring(1);
}

1

আমার এই সমস্যাটি ছিল এবং আমি এটি অনুসন্ধান করেছিলাম তখন আমি কিছু জাভা কীওয়ার্ড ব্যবহার করে নিজের পদ্ধতিটি তৈরি করেছি মাত্র স্ট্রিং ভেরিয়েবলটিকে প্যারামিটার হিসাবে পাস করতে হবে এবং সঠিক শিরোনামযুক্ত স্ট্রিং হিসাবে আউটপুট পেতে হবে।

public class Main
{
  public static void main (String[]args)
  {
    String st = "pARVeEN sISHOsIYA";
    String mainn = getTitleCase (st);
      System.out.println (mainn);
  }


  public static String getTitleCase(String input)
  {
    StringBuilder titleCase = new StringBuilder (input.length());
    boolean hadSpace = false;
    for (char c:input.toCharArray ()){
        if(Character.isSpaceChar(c)){
            hadSpace = true;
            titleCase.append (c);
            continue;
        }
        if(hadSpace){
            hadSpace = false;
            c = Character.toUpperCase(c);
            titleCase.append (c);
        }else{
            c = Character.toLowerCase(c);
            titleCase.append (c);
        }
    }
    String temp=titleCase.toString ();
    StringBuilder titleCase1 = new StringBuilder (temp.length ());
    int num=1;
    for (char c:temp.toCharArray ())
        {   if(num==1)
            c = Character.toUpperCase(c);
            titleCase1.append (c);
            num=0;
        }
        return titleCase1.toString ();
    }
}

এখানে আমি ট্রিম পদ্ধতিটি কোথাও বিন্যাসের জন্য ব্যবহার করি নি আমার ক্ষেত্রে আমি যথাযথ ছাঁটাইযুক্ত স্ট্রিং পাচ্ছি।
পারভীন শিশোদিয়া

0

আপনি খুব ভাল ব্যবহার করতে পারেন

org.apache.commons.lang.WordUtils

বা

কেসফর্ম্যাট

গুগলের এপিআই থেকে


4
পদ্ধতি এবং একটি উদাহরণ যুক্ত করতে এটি দরকারী হবে।
জেচাভিজ

কেসফর্ম্যাটটিতে সাধারণত প্রোগ্রাম শনাক্তকারীগুলিতে (আপারকামেল, লোয়ার-হাইপেন, UPPER_UNDERSCORE, ইত্যাদি) ফর্ম্যাট থাকে এবং কেবল ASCII পাঠ্য সমর্থন করে। এটি শিরোনাম কেসে রূপান্তরিত করতে ভাল কাজ করবে না।
এম জাস্টিন

0

আমি সম্প্রতি এই সমস্যার মধ্যেও চলে এসেছি এবং দুর্ভাগ্যক্রমে ম্যাক এবং ম্যাক দিয়ে শুরু হওয়া অনেকগুলি নাম রয়েছে, আমি স্কটব কোডের একটি সংস্করণ ব্যবহার করে শেষ করেছি যা আমি এই উপসর্গগুলি পরিচালনা করতে পরিবর্তন করেছি তাই যদি কেউ এটি ব্যবহার করতে চায় তবে এটি এখানে রয়েছে here

এখনও প্রান্তের কেসগুলি রয়েছে যা এটিকে মিস করে তবে সবচেয়ে খারাপটি ঘটতে পারে যে কোনও চিঠি যখন মূলধন করা হয় তখন ছোট হাতের অক্ষর থাকে।

/**
 * Get a nicely formatted representation of the name. 
 * Don't send this the whole name at once, instead send it the components.<br>
 * For example: andrew macnamara would be returned as:<br>
 * Andrew Macnamara if processed as a single string<br>
 * Andrew MacNamara if processed as 2 strings.
 * @param name
 * @return correctly formatted name
 */
public static String getNameTitleCase (String name) {
    final String ACTIONABLE_DELIMITERS = " '-/";
    StringBuilder sb = new StringBuilder();
    if (name !=null && !name.isEmpty()){                
        boolean capitaliseNext = true;
        for (char c : name.toCharArray()) {
            c = (capitaliseNext)?Character.toUpperCase(c):Character.toLowerCase(c);
            sb.append(c);
            capitaliseNext = (ACTIONABLE_DELIMITERS.indexOf((int) c) >= 0);
        }                       
        name = sb.toString();    
        if (name.startsWith("Mc") && name.length() > 2 ) {
            char c = name.charAt(2);
            if (ACTIONABLE_DELIMITERS.indexOf((int) c) < 0) {
                sb = new StringBuilder();
                sb.append (name.substring(0,2));
                sb.append (name.substring(2,3).toUpperCase());
                sb.append (name.substring(3));
                name=sb.toString();
            }               
        } else if (name.startsWith("Mac") && name.length() > 3) {
            char c = name.charAt(3);
            if (ACTIONABLE_DELIMITERS.indexOf((int) c) < 0) {
                sb = new StringBuilder();
                sb.append (name.substring(0,3));
                sb.append (name.substring(3,4).toUpperCase());
                sb.append (name.substring(4));
                name=sb.toString();
            }
        }
    }
    return name;    
}

0

যথাযথ শিরোনাম কেসে রূপান্তর:

String s= "ThiS iS SomE Text";
String[] arr = s.split(" ");
s = "";
for (String s1 : arr) {
    s += WordUtils.capitalize(s1.toLowerCase()) + " ";
}
s = s.substring(0, s.length() - 1);

ফলাফল: "এটি কিছু পাঠ্য"


0

স্প্রিং এর ব্যবহার StringUtils:

org.springframework.util.StringUtils.capitalize(someText);

যদি আপনি ইতিমধ্যে বসন্তটি ব্যবহার করেন তবে এটি অন্য কাঠামো আনতে এড়াতে পারে।


0

একটি স্ট্রিং শিরোনাম ক্ষেত্রে রূপান্তর করতে এই পদ্ধতিটি ব্যবহার করুন:

static String toTitleCase(String word) {
    return Stream.of(word.split(" "))
            .map(w -> w.toUpperCase().charAt(0)+ w.toLowerCase().substring(1))
            .reduce((s, s2) -> s + " " + s2).orElse("");
}

0

এই রূপান্তরকারীটি উটের কেস, সাদা-ফাঁকা স্থান, অঙ্কগুলি এবং অন্যান্য অক্ষরগুলিকে স্যানিটাইজড শিরোনামের ক্ষেত্রে রূপান্তর করে।

/**
 * Convert a string to title case in java (with tests).
 *
 * @author Sudipto Chandra
 */
public abstract class TitleCase {

    /**
     * Returns the character type. <br>
     * <br>
     * Digit = 2 <br>
     * Lower case alphabet = 0 <br>
     * Uppercase case alphabet = 1 <br>
     * All else = -1.
     *
     * @param ch
     * @return
     */
    private static int getCharType(char ch) {
        if (Character.isLowerCase(ch)) {
            return 0;
        } else if (Character.isUpperCase(ch)) {
            return 1;
        } else if (Character.isDigit(ch)) {
            return 2;
        }
        return -1;
    }

    /**
     * Converts any given string in camel or snake case to title case.
     * <br>
     * It uses the method getCharType and ignore any character that falls in
     * negative character type category. It separates two alphabets of not-equal
     * cases with a space. It accepts numbers and append it to the currently
     * running group, and puts a space at the end.
     * <br>
     * If the result is empty after the operations, original string is returned.
     *
     * @param text the text to be converted.
     * @return a title cased string
     */
    public static String titleCase(String text) {
        if (text == null || text.length() == 0) {
            return text;
        }

        char[] str = text.toCharArray();
        StringBuilder sb = new StringBuilder();

        boolean capRepeated = false;
        for (int i = 0, prev = -1, next; i < str.length; ++i, prev = next) {
            next = getCharType(str[i]);
            // trace consecutive capital cases
            if (prev == 1 && next == 1) {
                capRepeated = true;
            } else if (next != 0) {
                capRepeated = false;
            }
            // next is ignorable
            if (next == -1) {
                // System.out.printf("case 0, %d %d %s\n", prev, next, sb.toString());
                continue; // does not append anything
            }
            // prev and next are of same type
            if (prev == next) {
                sb.append(str[i]);
                // System.out.printf("case 1, %d %d %s\n", prev, next, sb.toString());
                continue;
            }
            // next is not an alphabet
            if (next == 2) {
                sb.append(str[i]);
                // System.out.printf("case 2, %d %d %s\n", prev, next, sb.toString());
                continue;
            }
            // next is an alphabet, prev was not +
            // next is uppercase and prev was lowercase
            if (prev == -1 || prev == 2 || prev == 0) {
                if (sb.length() != 0) {
                    sb.append(' ');
                }
                sb.append(Character.toUpperCase(str[i]));
                // System.out.printf("case 3, %d %d %s\n", prev, next, sb.toString());
                continue;
            }
            // next is lowercase and prev was uppercase
            if (prev == 1) {
                if (capRepeated) {
                    sb.insert(sb.length() - 1, ' ');
                    capRepeated = false;
                }
                sb.append(str[i]);
                // System.out.printf("case 4, %d %d %s\n", prev, next, sb.toString());
            }
        }
        String output = sb.toString().trim();
        output = (output.length() == 0) ? text : output;
        //return output;

        // Capitalize all words (Optional)
        String[] result = output.split(" ");
        for (int i = 0; i < result.length; ++i) {
            result[i] = result[i].charAt(0) + result[i].substring(1).toLowerCase();
        }
        output = String.join(" ", result);
        return output;
    }

    /**
     * Test method for the titleCase() function.
     */
    public static void testTitleCase() {
        System.out.println("--------------- Title Case Tests --------------------");
        String[][] samples = {
            {null, null},
            {"", ""},
            {"a", "A"},
            {"aa", "Aa"},
            {"aaa", "Aaa"},
            {"aC", "A C"},
            {"AC", "Ac"},
            {"aCa", "A Ca"},
            {"ACa", "A Ca"},
            {"aCamel", "A Camel"},
            {"anCamel", "An Camel"},
            {"CamelCase", "Camel Case"},
            {"camelCase", "Camel Case"},
            {"snake_case", "Snake Case"},
            {"toCamelCaseString", "To Camel Case String"},
            {"toCAMELCase", "To Camel Case"},
            {"_under_the_scoreCamelWith_", "Under The Score Camel With"},
            {"ABDTest", "Abd Test"},
            {"title123Case", "Title123 Case"},
            {"expect11", "Expect11"},
            {"all0verMe3", "All0 Ver Me3"},
            {"___", "___"},
            {"__a__", "A"},
            {"_A_b_c____aa", "A B C Aa"},
            {"_get$It132done", "Get It132 Done"},
            {"_122_", "122"},
            {"_no112", "No112"},
            {"Case-13title", "Case13 Title"},
            {"-no-allow-", "No Allow"},
            {"_paren-_-allow--not!", "Paren Allow Not"},
            {"Other.Allow.--False?", "Other Allow False"},
            {"$39$ldl%LK3$lk_389$klnsl-32489  3 42034 ", "39 Ldl Lk3 Lk389 Klnsl32489342034"},
            {"tHis will BE MY EXAMple", "T His Will Be My Exa Mple"},
            {"stripEvery.damn-paren- -_now", "Strip Every Damn Paren Now"},
            {"getMe", "Get Me"},
            {"whatSthePoint", "What Sthe Point"},
            {"n0pe_aLoud", "N0 Pe A Loud"},
            {"canHave SpacesThere", "Can Have Spaces There"},
            {"  why_underScore exists  ", "Why Under Score Exists"},
            {"small-to-be-seen", "Small To Be Seen"},
            {"toCAMELCase", "To Camel Case"},
            {"_under_the_scoreCamelWith_", "Under The Score Camel With"},
            {"last one onTheList", "Last One On The List"}
        };
        int pass = 0;
        for (String[] inp : samples) {
            String out = titleCase(inp[0]);
            //String out = WordUtils.capitalizeFully(inp[0]);
            System.out.printf("TEST '%s'\nWANTS '%s'\nFOUND '%s'\n", inp[0], inp[1], out);
            boolean passed = (out == null ? inp[1] == null : out.equals(inp[1]));
            pass += passed ? 1 : 0;
            System.out.println(passed ? "-- PASS --" : "!! FAIL !!");
            System.out.println();
        }
        System.out.printf("\n%d Passed, %d Failed.\n", pass, samples.length - pass);
    }

    public static void main(String[] args) {
        // run tests
        testTitleCase();
    }
}

এখানে কিছু ইনপুট রয়েছে:

aCamel
TitleCase
snake_case
fromCamelCASEString
ABCTest
expect11
_paren-_-allow--not!
  why_underScore   exists  
last one onTheList 

এবং আমার ফলাফল:

A Camel
Title Case
Snake Case
From Camel Case String
Abc Test
Expect11
Paren Allow Not
Why Under Score Exists
Last One On The List

0

এটির কোনও উত্তর এটি প্রকৃত শিরোনামের ক্ষেত্রে ফর্ম্যাট করে না: "কীভাবে আপনার স্বপ্নের জব ল্যান্ড করবেন", "টু কিল আ মকিংবার্ড" ইত্যাদি। তাই আমি নিজের পদ্ধতি তৈরি করেছি। ইংরেজি ভাষার পাঠ্যগুলির জন্য সবচেয়ে ভাল কাজ করে।

private final static Set<Character> TITLE_CASE_DELIMITERS = new HashSet<>();

  static {
    TITLE_CASE_DELIMITERS.add(' ');
    TITLE_CASE_DELIMITERS.add('.');
    TITLE_CASE_DELIMITERS.add(',');
    TITLE_CASE_DELIMITERS.add(';');
    TITLE_CASE_DELIMITERS.add('/');
    TITLE_CASE_DELIMITERS.add('-');
    TITLE_CASE_DELIMITERS.add('(');
    TITLE_CASE_DELIMITERS.add(')');
  }

  private final static Set<String> TITLE_SMALLCASED_WORDS = new HashSet<>();

  static {
    TITLE_SMALLCASED_WORDS.add("a");
    TITLE_SMALLCASED_WORDS.add("an");
    TITLE_SMALLCASED_WORDS.add("the");
    TITLE_SMALLCASED_WORDS.add("for");
    TITLE_SMALLCASED_WORDS.add("in");
    TITLE_SMALLCASED_WORDS.add("on");
    TITLE_SMALLCASED_WORDS.add("of");
    TITLE_SMALLCASED_WORDS.add("and");
    TITLE_SMALLCASED_WORDS.add("but");
    TITLE_SMALLCASED_WORDS.add("or");
    TITLE_SMALLCASED_WORDS.add("nor");
    TITLE_SMALLCASED_WORDS.add("to");
  }

  public static String toCapitalizedWord(String oneWord) {
    if (oneWord.length() < 1) {
      return oneWord.toUpperCase();
    }
    return "" + Character.toTitleCase(oneWord.charAt(0)) + oneWord.substring(1).toLowerCase();
  }

  public static String toTitledWord(String oneWord) {
    if (TITLE_SMALLCASED_WORDS.contains(oneWord.toLowerCase())) {
      return oneWord.toLowerCase();
    }
    return toCapitalizedWord(oneWord);
  }

  public static String toTitleCase(String str) {
    StringBuilder result = new StringBuilder();
    StringBuilder oneWord = new StringBuilder();

    char previousDelimiter = 'x';
    /* on start, always move to upper case */
    for (char c : str.toCharArray()) {
      if (TITLE_CASE_DELIMITERS.contains(c)) {
        if (previousDelimiter == '-' || previousDelimiter == 'x') {
          result.append(toCapitalizedWord(oneWord.toString()));
        } else {
          result.append(toTitledWord(oneWord.toString()));
        }
        oneWord.setLength(0);
        result.append(c);
        previousDelimiter = c;
      } else {
        oneWord.append(c);
      }
    }
    if (previousDelimiter == '-' || previousDelimiter == 'x') {
      result.append(toCapitalizedWord(oneWord.toString()));
    } else {
      result.append(toTitledWord(oneWord.toString()));
    }
    return result.toString();
  }

  public static void main(String[] args) {
    System.out.println(toTitleCase("one year in paris"));
    System.out.println(toTitleCase("How to Land Your Dream Job"));
  }

0

এটি সহজ সমাধান

    static void title(String a,String b){
    String ra = Character.toString(Character.toUpperCase(a.charAt(0)));
    String rb = Character.toString(Character.toUpperCase(b.charAt(0)));
    for(int i=1;i<a.length();i++){
        ra+=a.charAt(i);
    }
    for(int i=1;i<b.length();i++){
        rb+=b.charAt(i);
    }
    System.out.println(ra+" "+rb);

-1

এই কাজ করা উচিত:

String str="i like pancakes";
String arr[]=str.split(" ");
String strNew="";
for(String str1:arr)
{
    Character oldchar=str1.charAt(0);
    Character newchar=Character.toUpperCase(str1.charAt(0));
    strNew=strNew+str1.replace(oldchar,newchar)+" ";    
}
System.out.println(strNew);

4
ওপি বিল্টিন ফাংশনের জন্য অনুরোধ করায় এটি কোনও বৈধ উত্তর নয় । এর পিছনে লুকানো জটিলতা, অর্থাৎ i18n সম্পর্কিত মন্তব্যও দেখুন।
মার্কাস

-2

যে কোনও স্ট্রিংকে শিরোনামের ক্ষেত্রে রূপান্তরিত করার সহজ উপায় হ'ল গুগলস প্যাকেজটি org.apache.commons.lang.WordUtils ব্যবহার করা

System.out.println(WordUtils.capitalizeFully("tHis will BE MY EXAMple"));

এর ফলাফল হবে

এটা আমার উদাহরণ হবে

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


4
এটি নামকরণ করা হয়েছে capitalizeFullyকারণ এটি প্রতিটি শব্দের মূলধন করে, শিরোনামে এমন ছোট আকারের হওয়া উচিত including ব্যাকরণ.অবআউট.কম
টোজ /

4
অ্যাপাচি কমন্স গুগলের মালিকানাধীন নয়। এটি অ্যাপাচি সফটওয়্যার ফাউন্ডেশন দ্বারা রক্ষণাবেক্ষণ করা হয়। commons.apache.org
এটিউটরমে

-3

দুঃখিত আমি একটি শিক্ষানবিস তাই আমার কোডিং অভ্যাস সফল হয়!

public class TitleCase {

    String title(String sent)
    {   
        sent =sent.trim();
        sent = sent.toLowerCase();
        String[] str1=new String[sent.length()];
        for(int k=0;k<=str1.length-1;k++){
            str1[k]=sent.charAt(k)+"";
    }

        for(int i=0;i<=sent.length()-1;i++){
            if(i==0){
                String s= sent.charAt(i)+"";
                str1[i]=s.toUpperCase();
                }
            if(str1[i].equals(" ")){
                String s= sent.charAt(i+1)+"";
                str1[i+1]=s.toUpperCase();
                }

            System.out.print(str1[i]);
            }

        return "";
        }

    public static void main(String[] args) {
        TitleCase a = new TitleCase();
        System.out.println(a.title("   enter your Statement!"));
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.