একটি চর অ্যারে কিভাবে আবার স্ট্রিংয়ে রূপান্তর করা যায়?


405

আমার একটি চরের অ্যারে রয়েছে:

char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};

আমার বর্তমান সমাধানটি হ'ল

String b = new String(a);

তবে অবশ্যই এটি করার আরও ভাল উপায় আছে?


151
কেন আরও ভাল উপায় আছে বলে মনে করেন? আর আমাকে শিরলে ডাকবে না। :)
ইওলস অফ হুওক্রাফ্ট

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

1
আপনার কাছে যদি এই ছেলেগুলির অনেকগুলি থাকে তবে একটি অ্যারে বা চরের সংগ্রহগুলি [] বলুন, তবে সম্ভবত আপনি একটি স্ট্রিংবফারের সাথে চরের অ্যারে যুক্ত করতে পারেন তবে এখানে বা সেখানে একটি স্ট্রিংয়ের জন্য, আপনি যে পোস্ট করেছেন তা সর্বাধিক ব্যবহার।
ইওলস অফ হোলক্রাফ্ট

আপনি যদি চর [টি] অনুলিপি করা এড়ানোর কোনও উপায় সন্ধান করছেন তবে কোনও উপায় নেই। অন্যথায় আপনি স্ট্রিংয়ের অপরিবর্তনীয়তা হ্রাস করতে পারে।
পল কেগার

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

উত্তর:


212

না, সমাধানটি একেবারে সঠিক এবং খুব ন্যূনতম।

তবে খেয়াল করুন, এটি একটি অত্যন্ত অস্বাভাবিক পরিস্থিতি: কারণ Stringজাভাতে বিশেষভাবে পরিচালিত হয়, এমনকি "foo"এটি আসলে একটি String। সুতরাং স্ট্রিংকে আলাদা আলাদা করে বিভক্ত করার জন্য charএবং তাদের সাথে ফিরে যোগদানের প্রয়োজন সাধারণ কোডে প্রয়োজন হয় না।

এটি সি / সি ++ এর সাথে তুলনা করুন যেখানে "foo"আপনার charএকপাশে এবং অন্যদিকে শূন্য বাইট দ্বারা সমাপ্ত একটি বান্ডিল রয়েছে stringএবং তাদের মধ্যে অনেকগুলি রূপান্তর কারণ উত্তরাধিকার পদ্ধতিগুলি করে।


146

String text = String.copyValueOf(data);

অথবা

String text = String.valueOf(data);

তর্কসাপেক্ষে ভাল ( new Stringকল encapsulates )।


6
উভয় পদ্ধতি কল String(char[])বা এটির একটি বৈকল্পিক। এবং কপি অংশটি ভিতরে করা হয় String(char[])। এটি অন্যান্য valueOfপদ্ধতির সাথে প্রতিসাম্য ছাড়াও সরাসরি কল করার কোনও সুবিধা দেয় না ।
এএইচ

1
স্ট্যাটিক এবং আরও OOP শর্তগুলির একটি বৈপরীত্য। স্থির হিসাবে ঘোষিত যে কোনও কিছুই কোনও বস্তু বা তার আচরণের অংশ নয় এবং অতএব উদ্দেশ্য ভিত্তিক নয়। এগুলি ছাড়াও - যদি কোনও সম্ভাবনা থাকে যে বাস্তবায়নের Stringপরিবর্তন হবে এবং / অথবা একটি বেমানান উপায়ে বর্ধিত করা হবে বা বেশ কয়েকটি প্রতিযোগিতামূলক বাস্তবায়ন রানটাইমের সময় বেছে নেওয়া যেতে পারে, তবে স্থিতিশীল কারখানা পদ্ধতিটি বোধগম্য হয়। এই যেমন একটি নিম্ন স্তরের জিনিস সঙ্গে ঘটবে না String। অতএব আমার ভিত্তিটি হ'ল: সবচেয়ে ছোট হাতুড়িটি উপযুক্ত, সবচেয়ে বড়টি উপলভ্য নয় Use
এএইচ

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

1
@ এ সত্য যে তাদের CharSequenceইন্টারফেস তৈরি করতে হয়েছিল তা দেখায় যে আপনার "স্ট্রিংয়ের মতো নিম্ন স্তরের স্টাফগুলির সাথে কী ঘটবে" তা কতটা ত্রুটিযুক্ত - তারা স্ট্রিংয়ে যা ঘটে তা পরিবর্তন করে না কারণ তারা প্রথম দিকে নিজের সাথে আবদ্ধ করে রেখেছিল এবং এখন তারা ইচ্ছা করে তাদের ছিল না।
কর্সিকা

1
@ করসিকা আমি বলিনি, স্ট্রিং এপিআই সমস্ত ভাল এবং সোনালি। কেবলমাত্র এটি কোনও বেমানান পথে পরিবর্তিত হবে না এবং শ্রেণি নিজে এবং এর নির্মাতারা কোথাও যেতে পারবে না। :-)
এএইচ

37

এটি চর অ্যারেটিকে আবার স্ট্রিংয়ে রূপান্তর করবে:

char[] charArray = {'a', 'b', 'c'};
String str = String.valueOf(charArray);

14
String str = "wwwwww3333dfevvv";
char[] c = str.toCharArray();

চরিত্রের অ্যারেটিকে স্ট্রিংয়ে রূপান্তর করতে এখন দুটি উপায় রয়েছে।

Arrays.toString(c);

স্ট্রিংটি ফেরত দেয় [w, w, w, w, w, w, 3, 3, 3, 3, d, f, e, v, v, v]

এবং:

String.valueOf(c)

স্ট্রিংটি ফেরত দেয় wwwwww3333dfevvv

সংক্ষিপ্তসারে : মনোযোগ দিন Arrays.toString(c), কারণ আপনি "[w, w, w, w, w, w, 3, 3, 3, 3, d, f, e, v, v, v]"পরিবর্তে পাবেন "wwwwww3333dfevvv"


7

জাভাতে একটি স্ট্রিং কেবল অক্ষরের অ্যারের চারপাশে একটি অবজেক্ট। অতএব ক

char[]

একই অক্ষরযুক্ত একটি আনবক্সড স্ট্রিংয়ের অনুরূপ। আপনার অক্ষরের অ্যারে থেকে একটি নতুন স্ট্রিং তৈরি করে

new String(char[])

আপনি মূলত আপনার অক্ষরের অ্যারের আশেপাশে একটি স্ট্রিং অবজেক্টটি অটোবক্সে সংকলককে বলছেন।


3

আপনি String.valueOfপদ্ধতি ব্যবহার করতে পারেন ।

উদাহরণ স্বরূপ,

char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};
String b = String.valueOf(a);
System.out.println("Char Array back to String is: " + b);

চর অ্যারে আরও স্ট্রিংয়ের জন্য আপনি নীচের লিঙ্কগুলি উল্লেখ করতে পারেন

https://docs.oracle.com/javase/7/docs/api/java/lang/String.html

https://www.flowerbrackets.com/convert-char-array-to-string-java/


2
package naresh.java;

public class TestDoubleString {

    public static void main(String args[]){
        String str="abbcccddef";    
        char charArray[]=str.toCharArray();
        int len=charArray.length;

        for(int i=0;i<len;i++){
            //if i th one and i+1 th character are same then update the charArray
            try{
                if(charArray[i]==charArray[i+1]){
                    charArray[i]='0';                   
                }}
                catch(Exception e){
                    System.out.println("Exception");
                }
        }//finally printing final character string
        for(int k=0;k<charArray.length;k++){
            if(charArray[k]!='0'){
                System.out.println(charArray[k]);
            }       }
    }
}

এই কোডটি প্রশ্নের উত্তর দিতে পারে, কেন এবং / অথবা এই কোডটির প্রশ্নের উত্তর কীভাবে তার দীর্ঘমেয়াদী মানকে উন্নত করে সে সম্পর্কে অতিরিক্ত প্রসঙ্গ সরবরাহ করে।
বৈখো

1
 //Given Character Array 
  char[] a = {'h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'};


    //Converting Character Array to String using String funtion     
    System.out.println(String.valueOf(a));
    //OUTPUT : hello world

জাভা 8 স্ট্রিম ফাংশন ব্যবহার করে যে কোনও প্রদত্ত অ্যারে প্রকার স্ট্রিংয়ে রূপান্তর করা

String stringValue = 
Arrays.stream(new char[][]{a}).map(String::valueOf).collect(Collectors.joining());

1

ব্যবহার করার চেষ্টা করুন java.util.Arrays। এই মডিউলটিতে অ্যারে সম্পর্কিত বিভিন্ন ধরণের দরকারী পদ্ধতি রয়েছে।

Arrays.toString(your_array_here[]);


0

কেবল নীচের মতো স্ট্রিং.ভ্যালু ব্যবহার করুন;

  private static void h() {

        String helloWorld = "helloWorld";
        System.out.println(helloWorld);

        char [] charArr = helloWorld.toCharArray();

        System.out.println(String.valueOf(charArr));
    }

-3

এটা চেষ্টা কর:

CharSequence[] charArray = {"a","b","c"};

for (int i = 0; i < charArray.length; i++){
    String str = charArray.toString().join("", charArray[i]);
    System.out.print(str);
}

-4

আপনি স্ট্রিংবিল্ডার ক্লাসও ব্যবহার করতে পারেন

String b = new StringBuilder(a).toString();

স্ট্রিং বা স্ট্রিংবিল্ডারের ব্যবহার আপনার পদ্ধতির প্রয়োজনীয়তার সাথে পরিবর্তিত হয়।


কেন যদিও? এটি করে আপনি কী পাবেন?
কেসি

-12

1 বিকল্প উপায় হ'ল:

String b = a + "";

3
এটি ভুল হিসাবে এটি ধরে নিয়েছে যে toStringসঠিকভাবে কাজ করে char[]। এটি জেভিএমের কিছু নির্দিষ্ট বিক্রেতাদের এবং সংস্করণগুলিতে কাজ করতে পারে।
fommil

3
স্ট্রিং ক্লাসটি পরিবর্তনযোগ্য না হওয়ার কারণে এটি দুটি ক্রিয়াকলাপ সম্পাদন করবে: টু aস্ট্রিং () কল করে এবং অন্য স্ট্রিং অবজেক্ট তৈরি করা যা এর সাথে a.toString()""
সম্মতি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.