জাভা স্ট্রিংটি সমস্ত ক্যাপগুলি (আন্ডারস্কোর দ্বারা পৃথক করা শব্দ) থেকে ক্যামেলকেসে (কোনও শব্দ বিভাজক নয়) রূপান্তর করার সহজ উপায় কী?


152

শিরোনামটি বেশ কিছু বলছে। জাভাতে, কোন ফর্ম্যাট "THIS_IS_AN_EXAMPLE_STRING"থেকে " ThisIsAnExampleString" বিন্যাসে স্ট্রিংটি রূপান্তর করতে পারি তার সবচেয়ে সহজ / অতি মার্জিত উপায় কী ? আমি অনুমান করি এটি ব্যবহার করার জন্য কমপক্ষে একটি উপায় String.replaceAll()এবং একটি রেইজেক্স থাকতে হবে।

আমার প্রাথমিক চিন্তাভাবনাগুলি হ'ল: আন্ডারস্কোর ( _) দিয়ে স্ট্রিংটি প্রেন্ডিং করুন, পুরো স্ট্রিংকে লোয়ার কেসে রূপান্তর করুন এবং তারপরে প্রতিলিপিটির সমস্ত অক্ষরকে তার বড় সংস্করণ দিয়ে আন্ডারস্কোরের পূর্বে রূপান্তর করতে ব্যবহার করুন।


12
সম্পাদক এর নোট, 2015-03: উপরে "প্রাথমিক চিন্তা" সুপার বোবা হয়। আপনি ছয় বছরে বিল্ডিং সফটওয়্যার সম্পর্কে অনেক কিছু শিখতে পারেন।
ম্যাট বল

4
সেই মুহুর্তে যখন আপনি জিজ্ঞাসা করেন যে 'কী নির্বোধ এটি লিখেছিল' এবং উত্স নিয়ন্ত্রণে সেই যুবকটিকে নির্বোধ খুঁজে পেতে আপনি কী করেছেন। ওখানে এসেছি।
পিয়ারাস

@ ম্যাটবাল: আমি প্রাথমিক চিন্তার সংস্করণটি পছন্দ করি এটির জন্য একটি গ্রন্থাগার প্রয়োজন হয় না এবং কেবল একটি স্ট্রিং কনটেনটেশন এবং দুটি রেজেক্স প্রতিস্থাপনের প্রয়োজন।
কনরাড হাফনার

উত্তর:


192

আর একটি বিকল্প গুগল পেয়ারা ব্যবহার করছে com.google.common.base.CaseFormat

ব্যবহারের এই উদাহরণ দিয়ে জর্জ হকিন্স একটি মন্তব্য রেখে গেছেন:

CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, "THIS_IS_AN_EXAMPLE_STRING");

3
উদাহরণস্বরূপ জর্জ হকিন্স [ব্যবহারকারী: 245602] এর মন্তব্য দেখুন Re stackoverflow.com/questions/1143951/…
মাইকেল শ্যাপার

5
আমি অ্যান্ড্রয়েডের জন্য বিকাশ করায় খাঁটি জাভা উত্তরগুলি মিস করছি।
eliocs

1
এই উত্তরটি আমার পক্ষে সবচেয়ে কার্যকর। আমি আমার নিজের কোডটি খুব ভালভাবে লিখতে পারি, তবে অন্য কারও কাছে ইতিমধ্যে থাকলে আমি অবশ্যই চাকাটি পুনর্বিবেচনা করতে চাই না।
জেমস ডান

পড়ুন stackoverflow.com/questions/10310321/... এছাড়াও
Hartmut পি

1
@ ক্লাসিওমেন্ডেস আপনি কি github.com/google/guava/issues এ এনেছেন তা বিবেচনা করেছেন ?
আর্নআট এঙ্গেলেন

128

অ্যাপাচি কমন্স ল্যাং লাইব্রেরিতে ওয়ার্ডটিলগুলি দেখুন :

বিশেষত, মূলধনফুলি (স্ট্রিং স্ট্রিং, চর [] ডিলিমিটার) পদ্ধতিতে কাজটি করা উচিত:

String blah = "LORD_OF_THE_RINGS";
assertEquals("LordOfTheRings", WordUtils.capitalizeFully(blah, new char[]{'_'}).replaceAll("_", ""));

সবুজ বার!


55
না জনাব! আমাদের এই বিদ্যমান, ইতিমধ্যে কর্মক্ষম ইউটিলিটিগুলি নিজেরাই নতুন করে লেখা উচিত, কারণ আমরা সঠিক প্রোগ্রামার!
স্কাফম্যান

24
শুক্রবার বিকেলে এটি 16:42। আমি অন্য সবাইকে এটি আবার লিখতে দেব, আমি বিয়ারের জন্য বের হব \ o /;)
ড্যান গ্র্যাভেল

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

7
আমি আপনার সিদ্ধান্তকে সম্মান করি ম্যাট, এটি সম্ভবত আপনার অবস্থানের সঠিক জিনিস। তবে, নিম্নলিখিতটি বিবেচনা করুন: * আপনার দলের অন্য কেউ সিদ্ধান্ত নেন যে তাদের চিঠিগুলির ক্ষেত্রে অদলবদল করার জন্য একটি রুটিন প্রয়োজন need তারা এটি বাস্তবায়ন করে। আপনার এখন রক্ষণাবেক্ষণের জন্য 20 ডলার রয়েছে have আপনি লাইব্রেরিটি ব্যবহার করলে আপনার ~ 2 হবে। এবং ইউনিট পরীক্ষা ভুলে যাবেন না! * গৃহীত উত্তরের একটি খারাপ দিক রয়েছে যে পদ্ধতিটির নামটি কোড কী করে তা বর্ণনা করে না। কমন্স স্টাফের মতো একটি ভাল পুনঃব্যবহার করা এপিআই-তে খুব কমই এর ডাউনসাইড থাকে। মুল বক্তব্যটি হল রক্ষণাবেক্ষণ করা সফ্টওয়্যারটির বৃহত্তম ব্যয়। সাধারণত, পুনরায় ব্যবহার করা ভাল ধারণা।
ড্যান গ্র্যাভেল

2
"এই নির্দিষ্ট প্যাকেজ অ্যাক্সেস" করতে আপনার ক্লাসপথে repo1.maven.org/maven2/commons-lang/commons-lang/2.5/… ফেলে দিন । ম্যাভেন আর্টিক্টটি কমন্স-ল্যাং: কমন্স-ল্যাং: 2.5 এবং এটি মাভেন সেন্ট্রাল থেকে সহজেই উপলভ্য।
হেন্ডি ইরাওয়ান

90
static String toCamelCase(String s){
   String[] parts = s.split("_");
   String camelCaseString = "";
   for (String part : parts){
      camelCaseString = camelCaseString + toProperCase(part);
   }
   return camelCaseString;
}

static String toProperCase(String s) {
    return s.substring(0, 1).toUpperCase() +
               s.substring(1).toLowerCase();
}

দ্রষ্টব্য : আপনার যুক্তি বৈধতা যুক্ত করতে হবে।


1
উত্তম উত্তর, তবে যদি পদ্ধতিটির নামটি স্ট্রিংটি বিভক্ত হয়ে যায় বা যুক্তিটি বহিরাগত হয় এবং পদ্ধতিটি পাইপ হিসাবে সারিবদ্ধ হয়, উদাহরণস্বরূপ "THIS_IS_AN_EXAMPLE_STRING" .reoveUnderscores ()। ToCamelCase () এটি যদি কিছুটা ভাল হয় তবে এটি আরও ভাল হবে This আরও পুনরায় ব্যবহারযোগ্য।
ড্যান গ্র্যাভেল

1
এটি অগত্যা ভাল নয় (যদিও হ্যাঁ, এটি আরও পুনরায় ব্যবহারযোগ্য)। যখন এটি ফর্ম্যাটিং কনভেনশনগুলির নাম আসে, ক্যামটেলস আন্ডারস্কোর ব্যবহার না করে বোঝাতে পারে / করতে পারে; মুদ্রার বিপরীত দিকে, এমন কনভেনশন রয়েছে যা আন্ডারস্কোর ব্যবহার করে নির্দিষ্ট করে। সুতরাং আমার মনে, এটি একটি ফর্ম্যাট থেকে অন্য ফর্ম্যাটে রূপান্তর করার জন্য কেবল একটি পদ্ধতি।
ম্যাট বল

58
গুগল পেয়ারা লাইব্রেরিতে সাধারণ কনভেনশনগুলির মধ্যে রূপান্তর করার জন্য আরও সাধারণ ইউটিলিটি এনাম রয়েছে। এই ক্ষেত্রে আপনি করতে হবে String result = CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, "THIS_IS_AN_EXAMPLE_STRING");Com.google.common.base.Case Format জাভাদোক দেখুন ।
জর্জ হকিন্স

1
তুর্কি জাতীয় লোকালে ব্যবহৃত হলে এই উত্তরটি সমস্যার মধ্যে পড়বে ... আপনার কোডটি যদি একাধিক লোকালয়ে ব্যবহৃত হতে থাকে তবে টুঅপারকেস (লোকেল) এবং টু লোয়ারকেস (লোকেল) ব্যবহার করুন .. ডিফল্ট লোকেলের উপর নির্ভর করে না।
vkraemer

2
@ ড্যানগ্রাভেল: একবার আপনি আন্ডারস্কোরগুলি সরিয়ে ফেললে, শব্দটির পার্থক্য করা আর সম্ভব হবে না।
njzk2

18

অ্যাপাচি কমন্স ল্যাং 3 লাইব সহ এটি খুব সহজ।

import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.text.WordUtils;

public String getName(String text) {
  return StringUtils.remove(WordUtils.capitalizeFully(text, '_'), "_");
}

উদাহরণ:

getName("SOME_CONSTANT");

দেয়:

"SomeConstant"

2
পরিবর্তনশীল নামের ক্ষেত্রে, এটি বৈধ নয় কারণ নামটি অবশ্যই ছোট হাতের সাথে শুরু করা উচিত।
সেবি

9
public static void main(String[] args) {
    String start = "THIS_IS_A_TEST";
    StringBuffer sb = new StringBuffer();
    for (String s : start.split("_")) {
        sb.append(Character.toUpperCase(s.charAt(0)));
        if (s.length() > 1) {
            sb.append(s.substring(1, s.length()).toLowerCase());
        }
    }
    System.out.println(sb);
}

3
s.lethight পরীক্ষা করার প্রয়োজন নেই
njzk2

9

এখানে একটি কোড স্নিপেট যা সাহায্য করতে পারে:

String input = "ABC_DEF";
StringBuilder sb = new StringBuilder();
for( String oneString : input.toLowerCase().split("_") )
{
    sb.append( oneString.substring(0,1).toUpperCase() );
    sb.append( oneString.substring(1) );
}

// sb now holds your desired String

এই সমাধানটি ALL_UPPER থেকে উটের ক্ষেত্রে উপযুক্ত। তবে প্রোগ্রামটিতে সামান্য পরিবর্তন মিক্স শূন্য বা নিম্নতর (সাপের কেস) পরিচালনা করতে পারে। অনুমতি পেলে আমি সম্পাদনার পরামর্শ দিয়েছি।
Sud007

6

স্ট্রিম ব্যবহার করে জাভা 1.8 উদাহরণ

String text = "THIS_IS_SOME_TEXT";

String bactrianCamel = Stream.of(text.split("[^a-zA-Z0-9]"))
        .map(v -> v.substring(0, 1).toUpperCase() + v.substring(1).toLowerCase())
        .collect(Collectors.joining());
String dromedaryCamel = bactrianCamel.toLowerCase().substring(0, 1) + bactrianCamel.substring(1); 

System.out.printf("%s is now %s%n", text, dromedaryCamel); 

THIS_IS_SOME_TEXT এখন এটিআইসোমেক্সটেক্সট


আমি এই উত্তরটি পছন্দ করি তবে এর মধ্যে একটি ত্রুটি আছে যদি ইনপুট স্ট্রিংটি ইতিমধ্যে উটের ক্ষেত্রে থাকে, তবে এটি ক্ষেত্রে সম্পূর্ণ ইনপুটটিকে হ্রাস করে। যেমন abcDef abcdef হয়ে যায়।
এমসওয়াডেজ

text.matches( "([a-z]+[a-zA-Z0-9]+)+" )উট কেসিংয়ের আগে ব্যবহার করা একটি পরীক্ষা সম্ভবত নিম্ন-আবরণের সমস্যার জন্য যুক্তিসঙ্গত কাজ হতে পারে।
mrswadge

2

নিশ্চিত নয়, তবে আমি মনে করি আমি কম মেমরি ব্যবহার করতে পারি এবং এটি চার-বাই-চর করে নির্ভরযোগ্য পারফরম্যান্স পেতে পারি। আমি অনুরূপ কিছু করছিলাম, তবে পটভূমির থ্রেডগুলিতে লুপগুলিতে, তাই আপাতত আমি এটি চেষ্টা করছি। স্ট্রিং.স্প্লিট আরও ব্যয়বহুল হওয়ার পরে প্রত্যাশার সাথে আমার কিছু অভিজ্ঞতা ছিল। এবং আমি অ্যান্ড্রয়েডে কাজ করছি এবং আশা করি সিসিইউ ব্যবহারের ক্ষেত্রে জিসি হিচাপগুলি আরও বেশি সমস্যার সমাধান হবে।

  public static String toCamelCase(String value) {
    StringBuilder sb = new StringBuilder();

    final char delimChar = '_';
    boolean lower = false;
    for (int charInd = 0; charInd < value.length(); ++charInd) {
      final char valueChar = value.charAt(charInd);
      if (valueChar == delimChar) {
        lower = false;
      } else if (lower) {
        sb.append(Character.toLowerCase(valueChar));
      } else {
        sb.append(Character.toUpperCase(valueChar));
        lower = true;
      }
    }

    return sb.toString();
  }

স্ট্রিং.স্প্লিট ব্যয়বহুল এমন একটি ইঙ্গিতটি হ'ল এর ইনপুটটি একটি রেইজেক্স (স্ট্রিং.ইন্ডেক্সঅফের মতো কোনও চর নয়) এবং এটি একটি অ্যারের ফেরত দেয় (একটি পুনরাবৃত্তি বলার পরিবর্তে লুপ একবারে কেবল একটি জিনিস ব্যবহার করে)। "AB_AB_AB_AB_AB_AB_AB ..." এর মতো প্লাস কেসগুলি যে কোনও বাল্ক কপির দক্ষতা ভঙ্গ করে এবং দীর্ঘ স্ট্রিংগুলির জন্য আরও মেমরির ক্রম ব্যবহার করে তারপরে ইনপুট স্ট্রিং ব্যবহার করে।

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


2
public String withChars(String inputa) {
    String input = inputa.toLowerCase();
    StringBuilder sb = new StringBuilder();
    final char delim = '_';
    char value;
    boolean capitalize = false;
    for (int i=0; i<input.length(); ++i) {
        value = input.charAt(i);
        if (value == delim) {
            capitalize = true;
        }
        else if (capitalize) {
            sb.append(Character.toUpperCase(value));
            capitalize = false;
        }
        else {
            sb.append(value);
        }
    }

    return sb.toString();
}

public String withRegex(String inputa) {
    String input = inputa.toLowerCase();
    String[] parts = input.split("_");
    StringBuilder sb = new StringBuilder();
    sb.append(parts[0]);
    for (int i=1; i<parts.length; ++i) {
        sb.append(parts[i].substring(0,1).toUpperCase());
        sb.append(parts[i].substring(1));
    }

    return sb.toString();
}

টাইমস: মিলি সেকেন্ডে

Iterations = 1000
WithChars: start = 1379685214671 end = 1379685214683 diff = 12
WithRegex: start = 1379685214683 end = 1379685214712 diff = 29

Iterations = 1000
WithChars: start = 1379685217033 end = 1379685217045 diff = 12
WithRegex: start = 1379685217045 end = 1379685217077 diff = 32

Iterations = 1000
WithChars: start = 1379685218643 end = 1379685218654 diff = 11
WithRegex: start = 1379685218655 end = 1379685218684 diff = 29

Iterations = 1000000
WithChars: start = 1379685232767 end = 1379685232968 diff = 201
WithRegex: start = 1379685232968 end = 1379685233649 diff = 681

Iterations = 1000000
WithChars: start = 1379685237220 end = 1379685237419 diff = 199
WithRegex: start = 1379685237419 end = 1379685238088 diff = 669

Iterations = 1000000
WithChars: start = 1379685239690 end = 1379685239889 diff = 199
WithRegex: start = 1379685239890 end = 1379685240585 diff = 695

Iterations = 1000000000
WithChars: start = 1379685267523 end = 1379685397604 diff = 130081
WithRegex: start = 1379685397605 end = 1379685850582 diff = 452977

দুর্দান্ত, কি "THIS_IS_AN_EXAMPLE_STRING" ইনপুট দিয়ে পুনরাবৃত্তি হচ্ছে?
leorleor

@ লেওরলেওর আইট্রেশন = 1000000000 WithChars: শুরু = 1387547394726 শেষ = 1387547889896 ডিফ = 495170 WithRegex: আরম্ভ = 1387547889897 শেষ = 1387548944739 ডিফ = 1054842
শ্রীশা

1

আপনি org.modeshape.common.text.Inflector ব্যবহার করতে পারেন ।

বিশেষ করে:

String camelCase(String lowerCaseAndUnderscoredWord,
    boolean uppercaseFirstLetter, char... delimiterChars) 

ডিফল্টরূপে, এই পদ্ধতিটি স্ট্রিংগুলিকে আপারকামেলকেসে রূপান্তর করে।

ম্যাভেন আর্টিফ্যাক্টটি হ'ল: org.modeshape: Modeshpe- সাধারণ: 2.3.0. ফাইনাল

জেবস সংগ্রহস্থলের উপর: https://repository.jboss.org/nexus/content/repositories/releases

এখানে জার ফাইলটি: https://repository.jboss.org/nexus/content/repositories/releases/org/modeshape/modeshape-common/2.3.0.Final/modeshape-common-2.3.0.Final.jar


1

আপনি এটি ব্যবহার করে দেখতে পারেন:

 public static String convertToNameCase(String s)
    {
        if (s != null)
        {
            StringBuilder b = new StringBuilder();
            String[] split = s.split(" ");
            for (String srt : split)
            {
                if (srt.length() > 0)
                {
                    b.append(srt.substring(0, 1).toUpperCase()).append(srt.substring(1).toLowerCase()).append(" ");
                }
            }
            return b.toString().trim();
        }
        return s;
    }

1
protected String toCamelCase(String input) {
    if (input == null) {
        return null;
    }

    if (input.length() == 0) {
        return "";
    }

    // lowercase the first character
    String camelCaseStr = input.substring(0, 1).toLowerCase();

    if (input.length() > 1) {
        boolean isStartOfWord = false;

        for (int i = 1; i < input.length(); i++) {
            char currChar = input.charAt(i);
            if (currChar == '_') {
                // new word. ignore underscore
                isStartOfWord = true;
            } else if (Character.isUpperCase(currChar)) {
                // capital letter. if start of word, keep it
                if (isStartOfWord) {
                    camelCaseStr += currChar;
                } else {
                    camelCaseStr += Character.toLowerCase(currChar);
                }
                isStartOfWord = false;
            } else {
                camelCaseStr += currChar;
                isStartOfWord = false;
            }
        }
    }

    return camelCaseStr;
}

1
public String CamelCase(String str)
{
    String CamelCase="";
    String parts[] = str.split("_");
    for(String part:parts)
    {
        String as=part.toLowerCase();
        int a=as.length();
        CamelCase = CamelCase + as.substring(0, 1).toUpperCase()+ as.substring(1,a);    
    }
    return CamelCase;
}

এটি ক্যামেলকেসে রূপান্তরিত করার সহজতম প্রোগ্রাম। আশা করি এটা তোমাকে সাহায্য করবে..


0

এটি Enum Constantক্যামেল কেসে রূপান্তরিত হবে । যারা এ জাতীয় ফান্টিলিটি খুঁজছেন তাদের পক্ষে এটি সহায়ক হবে।

public enum TRANSLATE_LANGUAGES {
        ARABIC("ar"), BULGARIAN("bg"), CATALAN("ca"), CHINESE_SIMPLIFIED("zh-CN"), CHINESE_TRADITIONAL("zh-TW"), CZECH("cs"), DANISH("da"), DUTCH("nl"), ENGLISH("en"), ESTONIAN("et"), FINNISH("fi"), FRENCH(
                "fr"), GERMAN("de"), GREEK("el"), HAITIAN_CREOLE("ht"), HEBREW("he"), HINDI("hi"), HMONG_DAW("mww"), HUNGARIAN("hu"), INDONESIAN("id"), ITALIAN("it"), JAPANESE("ja"), KOREAN("ko"), LATVIAN(
                "lv"), LITHUANIAN("lt"), MALAY("ms"), NORWEGIAN("no"), PERSIAN("fa"), POLISH("pl"), PORTUGUESE("pt"), ROMANIAN("ro"), RUSSIAN("ru"), SLOVAK("sk"), SLOVENIAN("sl"), SPANISH("es"), SWEDISH(
                "sv"), THAI("th"), TURKISH("tr"), UKRAINIAN("uk"), URDU("ur"), VIETNAMESE("vi");

        private String code;

        TRANSLATE_LANGUAGES(String language) {
            this.code = language;
        }

        public String langCode() {
            return this.code;
        }

        public String toCamelCase(TRANSLATE_LANGUAGES lang) {
            String toString = lang.toString();
            if (toString.contains("_")) {
                String st = toUpperLowerCase(toString.split("_"));
            }

            return "";
        }

        private String toUpperLowerCase(String[] tempString) {
            StringBuilder builder = new StringBuilder();

            for (String temp : tempString) {

                String char1 = temp.substring(0, 1);
                String restString = temp.substring(1, temp.length()).toLowerCase();
                builder.append(char1).append(restString).append(" ");

            }

            return builder.toString();
        }
    }

0

এর আরও একটি সমাধান নিম্নরূপ হতে পারে।

public static String toCamelCase(String str, String... separators) {
    String separatorsRegex = "\\".concat(org.apache.commons.lang3.StringUtils.join(separators, "|\\"));
    List splits = Arrays.asList(str.toLowerCase().split(separatorsRegex));
    String capitalizedString = (String)splits.stream().map(WordUtils::capitalize).reduce("", String::concat);
    return capitalizedString.substring(0, 1).toLowerCase() + capitalizedString.substring(1);
}

0
public static final String  UPPER_CAMEL = "initUp";
public static final String  LOWER_CAMEL = "initLow";

public String toCamel(String src, String separator, String format) {
    StringBuilder builder = new StringBuilder(src.toLowerCase());
    int len = builder.length();

    for (int idx = builder.indexOf(separator); idx > 0 && idx < len; idx = builder.indexOf(separator, idx)) {
        builder = builder.replace(idx, idx + 2, (String.valueOf(builder.charAt(idx + 1)).toUpperCase()));
    }

    switch (format) {
    case LOWER_CAMEL:
        builder.setCharAt(0, Character.toLowerCase(builder.charAt(0)));
        break;
    default:
        builder.setCharAt(0, Character.toUpperCase(builder.charAt(0)));
        break;
    }

    return builder.toString();

}

অনুরোধ হিসাবে

toCamel("THIS_IS_AN_EXAMPLE_STRING", "_", UPPER_CAMEL)

কার্যকর করার সময়: 14 এমএস


0

একটি সাধারণ স্নিপেট:

 public static String camelCase(String in) {
    if (in == null || in.length() < 1) { return ""; } //validate in
    String out = "";
    for (String part : in.toLowerCase().split("_")) {
        if (part.length() < 1) { //validate length
            continue;
        }
        out += part.substring(0, 1).toUpperCase();
        if (part.length() > 1) { //validate length
            out += part.substring(1);
        }
    }
    return out;
}

-2

একাধিক স্ট্রিংয়ের জন্য জাভা 8:

import com.google.common.base.CaseFormat;



String camelStrings = "YOUR_UPPER, YOUR_TURN, ALT_TAB";

List<String> camelList = Arrays.asList(camelStrings.split(","));
camelList.stream().forEach(i -> System.out.println(CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, i) + ", "));

1
সদৃশ উত্তর
মার্ক জেরোনিমাস

-2
    protected String toCamelCase(CaseFormat caseFormat, String... words){
        if (words.length  == 0){
          throw new IllegalArgumentException("Word list is empty!");
        }

        String firstWord = words[0];
        String [] restOfWords = Arrays.copyOfRange(words, 1, words.length);

        StringBuffer buffer = new StringBuffer();
        buffer.append(firstWord);
        Arrays.asList(restOfWords).stream().forEach(w->buffer.append("_"+ w.toUpperCase()));

        return CaseFormat.UPPER_UNDERSCORE.to(caseFormat, buffer.toString());

    }

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