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


223

উদাহরণস্বরূপ স্ট্রিং

one thousand only
two hundred
twenty
seven

আমি কীভাবে বড় বড় অক্ষরে স্ট্রিংয়ের প্রথম চরিত্রটি পরিবর্তন করব এবং অন্য কোনও বর্ণের ক্ষেত্রে পরিবর্তন করব না?

পরিবর্তনের পরে এটি হওয়া উচিত:

One thousand only
Two hundred
Twenty
Seven

দ্রষ্টব্য: এটি করার জন্য আমি apache.commons.lang.WordUtils ব্যবহার করতে চাই না।


1
@eat_a_lemon: ক্যারেক্টার.টু আপার কেস () ব্যবহার করা আরও ভাল, কারণ এটি অ্যাজ (যেমন সংখ্যা, বিরামচিহ্ন, ডায়াক্রিটিকস সহ বর্ণচিহ্নগুলি, ল্যাটিন-বিহীন অক্ষর) ব্যবহার করে।
সাইমন নিক্কারসন

1
সম্পর্কিত: stackoverflow.com/questions/1149855
ManBugra

উত্তর:


544

যদি আপনি কেবল নামের একটি স্ট্রিংয়ের প্রথম অক্ষরটি মূলধন করতে চান এবং বাকীটি inputএকা ছেড়ে যান:

String output = input.substring(0, 1).toUpperCase() + input.substring(1);

এখন outputআপনি যা চান তা পাবে। এটি inputব্যবহার করার আগে আপনার কমপক্ষে একটি অক্ষর দীর্ঘ আছে তা পরীক্ষা করুন , অন্যথায় আপনি একটি ব্যতিক্রম পাবেন।


37
এছাড়াও, আমি প্রথমে পুরো ইনপুটটি নেব এবং এটি নিম্ন-কেস তৈরি করব বা আপনার উদাহরণটি আবার নীচে লিখব: স্ট্রিং আউটপুট = ইনপুট.সুবস্ট্রিং (0, 1) .toUpperCase () + ইনপুট.সুবস্ট্রিং (1) .toLowerCase ();
ডেভিড ব্রসার্ড

2
এবং আপনি স্ট্রিংয়ের দৈর্ঘ্যটি পরীক্ষা করতে চান, কারণ এটি 1 টি অক্ষরের স্ট্রিং বা এমনকি 0 হতে পারে
মেরেক

1
আমি এটি এখানে গেটর এবং সেটার নাম তৈরির জন্য খুঁজে পেয়েছি, সুতরাং স্ট্রিংয়ের বাকি অংশে লোয়ারকেসে ফিল্ডের নামটি ভেঙে দেবে। দেওয়া উত্তরটি আমার পক্ষে নিখুঁত।
কায়সার

85
public String capitalizeFirstLetter(String original) {
    if (original == null || original.length() == 0) {
        return original;
    }
    return original.substring(0, 1).toUpperCase() + original.substring(1);
}

কেবল ... একটি সম্পূর্ণ সমাধান, আমি দেখতে পাচ্ছি যে এই প্রত্যেকে শেষ পর্যন্ত কী শেষ হয়েছিল = সবাই পোস্ট করেছেন।


12
খুশী হলাম। আমি এটি "একরেখায়িত": return original.length() == 0 ? original : original.substring(0, 1).toUpperCase() + original.substring(1);
মার্পার

2
@ মহাপার:, if length() == 0আমরা কী নিরাপদে বলতে পারি না যে এটি ""এবং এটির পরিবর্তে ফিরে আসতে পারি original? ওয়ান-লাইনারে আমাদের কয়েকটি অক্ষর সংরক্ষণ করে। আমি জিজ্ঞাসা করি কারণ আমার মনে হচ্ছে জাভা গোটাছার মতো পূর্ণ একটি ভাষা, দৈর্ঘ্যের শূন্যের স্ট্রিং থাকার অন্য কোনও উপায় থাকলে আমি সত্যিই অবাক হব না।
আর্টঅফ ওয়ারফেয়ার

আপনি সমস্ত সত্য @ আর্টঅফ ওয়ারফেয়ারে কথা বলছেন।
মার্পার

দ্রষ্টব্য: আপনি ইংরাজীবিহীন অক্ষরের সাহায্যে এটিও তৈরি করতে চাইতে পারেন। সেক্ষেত্রে আপনাকে আপার কেস () পদ্ধতিতে লোকেল নির্দিষ্ট করা উচিত।
মাকালেলে

String.toUpperCase(Locale)একটি নির্বিচারে স্ট্রিংয়ের জন্য এটি ব্যবহার করা সম্ভব নয় , কারণ লোকেলের পাঠ্যটির সাথে মিল রাখতে হবে। হ্যাঁ, এটি ব্যবহার করা উচিত, তবে কোনটি Localeব্যবহার করা যায় তা সবসময় পরিষ্কার নয় ...
ক্রিস্টোফার শুল্টজ

81

org.apache.commons.lang.StringUtilsক্লাস ব্যবহার করা সহজ উপায়

StringUtils.capitalize(Str);


8
এখানে সামান্য পার্শ্ব-নোট। এটি কেবল এমন স্ট্রিংয়ের জন্য কাজ করে যা ইতিমধ্যে মূলধন নয়।
জববার্ট

5
@ জোজবার্ট দয়া করে আপনার মন্তব্যটি পরিষ্কার করুন। যদি স্ট্রিংগুলি ইতিমধ্যে মূলধন হয়ে থাকে, তবে এটি নামকরণ পদ্ধতি থাকা সত্ত্বেও কী সেগুলি বেঁধে দেওয়া হবে capitalize?
সিউর

25

এছাড়াও, এখন পর্যন্ত org.springframework.util.StringUtilsস্প্রিং ফ্রেমওয়ার্ক :

StringUtils.capitalize(str);


6
String sentence = "ToDAY   WeAthEr   GREat";    
public static String upperCaseWords(String sentence) {
        String words[] = sentence.replaceAll("\\s+", " ").trim().split(" ");
        String newSentence = "";
        for (String word : words) {
            for (int i = 0; i < word.length(); i++)
                newSentence = newSentence + ((i == 0) ? word.substring(i, i + 1).toUpperCase(): 
                    (i != word.length() - 1) ? word.substring(i, i + 1).toLowerCase() : word.substring(i, i + 1).toLowerCase().toLowerCase() + " ");
        }

        return newSentence;
    }
//Today Weather Great

এটি ওপির প্রশ্নের উত্তর দেয় না। যেহেতু এটি অন্যান্য অক্ষরের ক্ষেত্রে পরিবর্তন করে।
লিওউই রুইজাকার্স 21

প্রশ্ন তাকান। সম্ভবত, আপনি প্রশ্নটি ভালভাবে পেলেন না।
সমেট TZTOPRAK

3
String s=t.getText().trim();
int l=s.length();
char c=Character.toUpperCase(s.charAt(0));
s=c+s.substring(1);
for(int i=1; i<l; i++)
    {
        if(s.charAt(i)==' ')
        {
            c=Character.toUpperCase(s.charAt(i+1));
            s=s.substring(0, i) + c + s.substring(i+2);
        }
    }
    t.setText(s);

2
এটি সম্পূর্ণরূপে স্ট্রিং নয়, প্রতিটি শব্দের প্রথম অক্ষর বড় হবে । ওপি দ্বারা প্রদত্ত উদাহরণগুলি দেখুন। এছাড়াও স্ট্রিংয়ের শেষে কোনও স্থান থাকলে সমস্যা হতে পারে।
tobias_k

2

আপনি এখানে যান (আশা করি এটি আপনাকে ধারণা দেয়):

/*************************************************************************
 *  Compilation:  javac Capitalize.java
 *  Execution:    java Capitalize < input.txt
 * 
 *  Read in a sequence of words from standard input and capitalize each
 *  one (make first letter uppercase; make rest lowercase).
 *
 *  % java Capitalize
 *  now is the time for all good 
 *  Now Is The Time For All Good 
 *  to be or not to be that is the question
 *  To Be Or Not To Be That Is The Question 
 *
 *  Remark: replace sequence of whitespace with a single space.
 *
 *************************************************************************/

public class Capitalize {

    public static String capitalize(String s) {
        if (s.length() == 0) return s;
        return s.substring(0, 1).toUpperCase() + s.substring(1).toLowerCase();
    }

    public static void main(String[] args) {
        while (!StdIn.isEmpty()) {
            String line = StdIn.readLine();
            String[] words = line.split("\\s");
            for (String s : words) {
                StdOut.print(capitalize(s) + " ");
            }
            StdOut.println();
        }
    }

}

এবং অন্যান্য অক্ষরের ক্ষেত্রে পরিবর্তন না। এছাড়াও আপনার ব্যবহারের StdInএবং StdOutখুব জাভা Y নয়। :-)
সাইমন নিক্কারসন

2

এটির জন্য এর সহজ কেবল একটি লাইন কোড প্রয়োজন। String A = scanner.nextLine(); তারপরে যদি আপনার এই প্রথম অক্ষরের সাথে স্ট্রিংটি প্রদর্শিত হয় তবে এটি লিখতে হবে।

System.out.println(A.substring(0, 1).toUpperCase() + A.substring(1));

এবং এটি এখন সম্পন্ন।


1

স্ট্রিংটোকেনাইজার শ্রেণীর ব্যবহার উদাহরণ:

String st = "  hello all students";
String st1;
char f;
String fs="";
StringTokenizer a= new StringTokenizer(st);
while(a.hasMoreTokens()){   
        st1=a.nextToken();
        f=Character.toUpperCase(st1.charAt(0));
        fs+=f+ st1.substring(1);
        System.out.println(fs);
} 

1

স্ট্রিংবিল্ডারের সাথে সমাধান:

value = new StringBuilder()
                .append(value.substring(0, 1).toUpperCase())
                .append(value.substring(1))
                .toString();

.. পূর্ববর্তী উত্তরের ভিত্তিতে


1

একসাথে সমস্ত কিছু যুক্ত করা, স্ট্রিংয়ের শুরুতে অতিরিক্ত সাদা স্থানের জন্য ট্রিম করা ভাল ধারণা। অন্যথায় .substring (0,1) .toUpperCase একটি সাদা স্থানকে বড় করার চেষ্টা করবে।

    public String capitalizeFirstLetter(String original) {
        if (original == null || original.length() == 0) {
            return original;
        }
        return original.trim().substring(0, 1).toUpperCase() + original.substring(1);
    }

1

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

শব্দের প্রথম অক্ষরকে ক্যাপিটালাইজ করার জন্য কেবল .স্প্লিট ("") সরান

           b.name.split(" ")
                 .filter { !it.isEmpty() }
                 .map { it.substring(0, 1).toUpperCase() 
                 +it.substring(1).toLowerCase() }
                  .joinToString(" ")

1

জুলাই 2019 আপডেট করুন

বর্তমানে এটি করার জন্য সর্বাধিক যুগোপযুক্ত লাইব্রেরি ফাংশন অন্তর্ভুক্ত রয়েছে org.apache.commons.lang3.StringUtils

import org.apache.commons.lang3.StringUtils;

StringUtils.capitalize(myString);

আপনি যদি মাভেন ব্যবহার করছেন তবে আপনার pom.xML এ নির্ভরতা আমদানি করুন:

<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-lang3</artifactId>
  <version>3.9</version>
</dependency>

1

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

ম্যানিপুলেশন অংশটি অ্যাপাচি কমন্স ল্যাংয়ের বাইরে সরানো হয়েছে। এটি এখন অ্যাপাচি কমন্স পাঠ্যে স্থাপন করা হয়েছে । এটি https://search.maven.org/artifact/org.apache.commons/commons-text- এর মাধ্যমে পান ।

আপনি অ্যাপাচি কমন্স পাঠ্য থেকে ওয়ার্ডটিলস.ক্যাপিটালাইজ (স্ট্রিং স্ট্র্যাম) ব্যবহার করতে পারেন । এটি আপনার চেয়ে বেশি শক্তিশালী। এটি পূর্ণ (যেমন, ফিক্সিং "oNe tousand only") বড় করে তুলতে পারে ।

যেহেতু এটি সম্পূর্ণ পাঠ্যে কাজ করে, তাই কেবলমাত্র প্রথম শব্দটি মূলধন করতে একে বলতে হবে।

WordUtils.capitalize("one thousand only", new char[0]);

কার্যকারিতা সহ খেলতে সক্ষম করতে পূর্ণ JUnit শ্রেণি:

package io.github.koppor;

import org.apache.commons.text.WordUtils;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.*;

class AppTest {

  @Test
  void test() {
    assertEquals("One thousand only", WordUtils.capitalize("one thousand only", new char[0]));
  }

}

1

আপনি যদি কেবলমাত্র প্রথম অক্ষরকে মূলধন করতে চান তবে নীচের কোডটি ব্যবহার করা যেতে পারে

String output = input.substring(0, 1).toUpperCase() + input.substring(1);

1

প্রকৃতপক্ষে, আপনি যদি +অপারেটরটিকে এড়ানো এবং concat()এই ক্ষেত্রে ব্যবহার করেন তবে আপনি সেরা পারফরম্যান্স পাবেন । এটি কেবলমাত্র 2 টি স্ট্রিং মার্জ করার জন্য সেরা বিকল্প (যদিও অনেকগুলি স্ট্রিংয়ের পক্ষে তেমন ভাল নয়)। সেক্ষেত্রে কোডটি দেখতে এরকম হবে:

String output = input.substring(0, 1).toUpperCase().concat(input.substring(1));


0

inputস্ট্রিং দেওয়া :

Character.toUpperCase(input.charAt(0)) + input.substring(1).toLowerCase()

0

আপনি নিম্নলিখিত কোড চেষ্টা করতে পারেন:

public string capitalize(str) {
    String[] array = str.split(" ");
    String newStr;
    for(int i = 0; i < array.length; i++) {
        newStr += array[i].substring(0,1).toUpperCase() + array[i].substring(1) + " ";
    }
    return newStr.trim();
}

0
public static String capitalize(String str){
        String[] inputWords = str.split(" ");
        String outputWords = "";
        for (String word : inputWords){
            if (!word.isEmpty()){
                outputWords = outputWords + " "+StringUtils.capitalize(word);
            }
        }
        return outputWords;
    }

0

আমি গৃহীত উত্তরের উপর একটি NULL চেক এবং সূচিপত্র আউটবাউন্ডস এক্সসেপশন যুক্ত করতে চাই।

String output = input.substring(0, 1).toUpperCase() + input.substring(1);

জাভা কোড:

  class Main {
      public static void main(String[] args) {
        System.out.println("Capitalize first letter ");
        System.out.println("Normal  check #1      : ["+ captializeFirstLetter("one thousand only")+"]");
        System.out.println("Normal  check #2      : ["+ captializeFirstLetter("two hundred")+"]");
        System.out.println("Normal  check #3      : ["+ captializeFirstLetter("twenty")+"]");
        System.out.println("Normal  check #4      : ["+ captializeFirstLetter("seven")+"]");

        System.out.println("Single letter check   : ["+captializeFirstLetter("a")+"]");
        System.out.println("IndexOutOfBound check : ["+ captializeFirstLetter("")+"]");
        System.out.println("Null Check            : ["+ captializeFirstLetter(null)+"]");
      }

      static String captializeFirstLetter(String input){
             if(input!=null && input.length() >0){
                input = input.substring(0, 1).toUpperCase() + input.substring(1);
            }
            return input;
        }
    }

আউটপুট:

Normal  check #1      : [One thousand only]
Normal  check #2      : [Two hundred]
Normal  check #3      : [Twenty]
Normal  check #4      : [Seven]
Single letter check   : [A]
IndexOutOfBound check : []
Null Check            : [null]

0

আপনার ইনপুটস্ট্রিংয়ের মান নির্বিশেষে নিম্নলিখিতগুলি আপনাকে একই ধারাবাহিক আউটপুট দেবে:

if(StringUtils.isNotBlank(inputString)) {
    inputString = StringUtils.capitalize(inputString.toLowerCase());
}

0

substring()স্ট্রিংয়ের পদ্ধতিটি ব্যবহার করা

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

    return str.substring(0, 1).toUpperCase() + str.substring(1);
}

capitalize()একটি স্ট্রিংয়ের প্রথম অক্ষরকে বড় হাতের মধ্যে রূপান্তর করার জন্য এখন কেবল পদ্ধতিটি কল করুন :

System.out.println(capitalize("stackoverflow")); // Stackoverflow
System.out.println(capitalize("heLLo")); // HeLLo
System.out.println(capitalize(null)); // null

2. অ্যাপাচি কমন্স ল্যাং

StringUtilsকমন্স ল্যাঙ থেকে বর্গ উপলব্ধ capitalize()পদ্ধতি যা এই উদ্দেশ্যে ব্যবহার করা যেতে পারে:

System.out.println(StringUtils.capitalize("apache commons")); // Apache commons
System.out.println(StringUtils.capitalize("heLLO")); // HeLLO
System.out.println(StringUtils.uncapitalize(null)); // null

আপনার pom.xmlফাইলে নিম্নলিখিত নির্ভরতা যুক্ত করুন (কেবলমাত্র মাভেনের জন্য):

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.9</version>
</dependency>

এই নিবন্ধটি এখানে এই দুটি পদ্ধতির বিস্তারিতভাবে ব্যাখ্যা করা হয়েছে।


-1
class Test {
     public static void main(String[] args) {
        String newString="";
        String test="Hii lets cheCk for BEING String";  
        String[] splitString = test.split(" ");
        for(int i=0; i<splitString.length; i++){
            newString= newString+ splitString[i].substring(0,1).toUpperCase() 
                    + splitString[i].substring(1,splitString[i].length()).toLowerCase()+" ";
        }
        System.out.println("the new String is "+newString);
    }
 }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.