জাভাতে স্ট্রিংটিকে "চরিত্র" অ্যারে রূপান্তর করা


108

আমি ক্যারেক্টার ক্লাসের Stringঅবজেক্টের অ্যারেতে রূপান্তর করতে চাই তবে আমি রূপান্তর করতে অক্ষম। আমি জানি যে আমি একটি স্ট্রিংকে পদ্ধতির সাহায্যে আদিম ডেটাটাইপ টাইপ "চর" এর অ্যারে রূপান্তর করতে পারি তবে এটি স্ট্রিংকে চরিত্রের ধরণের বস্তুর অ্যারে রূপান্তরিত করতে সহায়তা করে না ।toCharArray()

আমি কীভাবে এটি করতে যাব?


6
"চরিত্রের অ্যারের সাথে ফিট করে না" বলতে কী বোঝ?
বার্সজু

আপনি কি এটিকে আবার শব্দ দিয়ে বলতে পারেন বা আরও কিছু উচ্চারণ করতে পারেন, বা সম্ভবত কোনও কোড উদাহরণ সরবরাহ করতে পারেন?
ব্ল্যাককম্প

রূপান্তর charকরতে Character, ব্যবহার করুন Character.valueOf(mychar)। এটি যদি অ্যারে হয় তবে প্রতিটি উপাদান লুপ করে রূপান্তর করুন।
ই।

জাভাতে মানচিত্রের ফাংশন, ল্যাম্বডা এক্সপ্রেশন প্রয়োজন।
এরিক হার্টফোর্ড

উত্তর:


184

এটা ব্যবহার কর:

String str = "testString";
char[] charArray = str.toCharArray();
Character[] charObjectArray = ArrayUtils.toObject(charArray);

27
আমি ইচ্ছা করি অ্যারেআইটিসগুলি জেভিএমগুলিতে মানসম্পন্ন!
অ্যালভিন

4
ArrayUtilscommons-langজেডিকে থেকে নয়, তাই না?
এরিক ওয়াং

66

সাথে এক লাইনার :

String str = "testString";

//[t, e, s, t, S, t, r, i, n, g]
Character[] charObjectArray = 
    str.chars().mapToObj(c -> (char)c).toArray(Character[]::new); 

এটি যা করে তা হ'ল:

  • একটি IntStreamঅক্ষর পান (আপনি এটি দেখতেও চাইতে পারেন codePoints())
  • প্রতিটি 'চরিত্রের' মানটি মানচিত্র করুন Character(আপনাকে আসলে এটি বলতে হবে যে এটি সত্যই একটি char, এবং তখন জাভা এটি স্বয়ংক্রিয়ভাবে বাক্স করবে Character)
  • কল করে ফলাফল অ্যারে পান toArray()

33

নিজেই কেন একটু পদ্ধতি লিখবেন না

public Character[] toCharacterArray( String s ) {

   if ( s == null ) {
     return null;
   }

   int len = s.length();
   Character[] array = new Character[len];
   for (int i = 0; i < len ; i++) {
      /* 
      Character(char) is deprecated since Java SE 9 & JDK 9
      Link: https://docs.oracle.com/javase/9/docs/api/java/lang/Character.html
      array[i] = new Character(s.charAt(i));
      */
      array[i] = s.charAt(i);
   }

   return array;
}

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

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

1
আপনি কি ঠিক বলেছেন? তবে ToCharArray () অপারেশন হিসাবে প্রয়োজন হিসাবে অক্ষর বস্তুর পরিবর্তে আদিম প্রকারের অ্যারে প্রদান করে returns অবশ্যই, আপনি চরকে [] রূপান্তর করতে আবারও চরের মাধ্যমে লুপ করতে পারেন []। তবে, ক্যারেক্টার অবজেক্ট তৈরির স্ট্রিংয়ের বিজ্ঞাপনের মধ্য দিয়ে লুপিং করা এত সহজ you
অ্যালভিন

6

আমি আশা করি নীচের কোডটি আপনাকে সহায়তা করবে।

String s="Welcome to Java Programming";
char arr[]=s.toCharArray();
for(int i=0;i<arr.length;i++){
    System.out.println("Data at ["+i+"]="+arr[i]);
}

এটি কাজ করছে এবং ফলাফল:

Data at [0]=W
Data at [1]=e
Data at [2]=l
Data at [3]=c
Data at [4]=o
Data at [5]=m
Data at [6]=e
Data at [7]= 
Data at [8]=t
Data at [9]=o
Data at [10]= 
Data at [11]=J
Data at [12]=a
Data at [13]=v
Data at [14]=a
Data at [15]= 
Data at [16]=P
Data at [17]=r
Data at [18]=o
Data at [19]=g
Data at [20]=r
Data at [21]=a
Data at [22]=m
Data at [23]=m
Data at [24]=i
Data at [25]=n
Data at [26]=g

4
এটি ওপি যা চেয়েছিল তা মোটেই নয়।
কিউস - মনিকা

3

String#toCharArrayএকটি অ্যারে প্রদান করে char, আপনার কাছে যা আছে তার একটি অ্যারে Character। বেশিরভাগ ক্ষেত্রে আপনি ব্যবহার করেন কিনা charবা অটোবক্সিংCharacter যেমন আছে তাতে কিছু আসে যায় না । আপনার ক্ষেত্রে সমস্যাটি হ'ল অ্যারেগুলি অটোবক্সেড নয়, আমি আপনাকে চরের অ্যারে ব্যবহার করার পরামর্শ দিই ( )।char[]


2

এক্ষেত্রে আপনাকে নিজের পদ্ধতি লিখতে হবে। একটি লুপ ব্যবহার করুন charAt(i)এবং প্রতিটি অক্ষর ব্যবহার করুন এবং এটি Character[]ব্যবহার করে আপনার অ্যারেতে সেট করুন arrayname[i] = string.charAt[i]


2

এই পদ্ধতিটি স্ট্রিংকে আর্গুমেন্ট হিসাবে গ্রহণ করে এবং অক্ষর অ্যারে ফিরিয়ে দেয়

/**
 * @param sourceString
 *            :String as argument
 * @return CharcterArray
 */
public static Character[] toCharacterArray(String sourceString) {
    char[] charArrays = new char[sourceString.length()];
    charArrays = sourceString.toCharArray();
    Character[] characterArray = new Character[charArrays.length];
    for (int i = 0; i < charArrays.length; i++) {
        characterArray[i] = charArrays[i];
    }
    return characterArray;
}


1

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

   //Givent String
   String given = "asdcbsdcagfsdbgdfanfghbsfdab";

   //Converting String to Character Array(It's an inbuild method of a String)
   char[] characterArray = given.toCharArray();
   //returns = [a, s, d, c, b, s, d, c, a, g, f, s, d, b, g, d, f, a, n, f, g, h, b, s, f, d, a, b]

// এক উপায়: অক্ষর অ্যারেটিকে স্ট্রিংয়ে ফিরিয়ে দেওয়া

  int length = Arrays.toString(characterArray).replaceAll("[, ]","").length();

  //First Way to get the string back
  Arrays.toString(characterArray).replaceAll("[, ]","").substring(1,length-1)
  //returns asdcbsdcagfsdbgdfanfghbsfdab
  or 
  // Second way to get the string back
  Arrays.toString(characterArray).replaceAll("[, ]","").replace("[","").replace("]",""))
 //returns asdcbsdcagfsdbgdfanfghbsfdab

// দ্বিতীয় উপায়: অক্ষরের অ্যারেটিকে স্ট্রিংয়ে ফিরিয়ে দেওয়া

String.valueOf(characterArray);

// তৃতীয় উপায়: অক্ষর অ্যারেটিকে স্ট্রিংয়ে ফিরিয়ে দেওয়া

Arrays.stream(characterArray)
           .mapToObj(i -> (char)i)
           .collect(Collectors.joining());

স্ট্রিংকে চরিত্রের অ্যারেতে রূপান্তর করা হচ্ছে

Character[] charObjectArray =
                           givenString.chars().
                               mapToObj(c -> (char)c).
                               toArray(Character[]::new);

চর অ্যারে চরিত্রের অ্যারেতে রূপান্তর করা

 String givenString = "MyNameIsArpan";
char[] givenchararray = givenString.toCharArray();


     String.valueOf(givenchararray).chars().mapToObj(c -> 
                         (char)c).toArray(Character[]::new);

চর অ্যারে চরিত্রের অ্যারেতে রূপান্তর করার সুবিধা আপনি সাব অ্যারে পেতে অ্যারে স্ট্রিম ফান্ট ব্যবহার করতে পারেন

String subStringFromCharacterArray = 

              Arrays.stream(charObjectArray,2,6).
                          map(String::valueOf).
                          collect(Collectors.joining());

0

আপনি যদি জে টেক্সটফিল্ডের সাথে কাজ করছেন তবে এটি সহায়ক হতে পারে ..

public JTextField display;
String number=e.getActionCommand();

display.setText(display.getText()+number);

ch=number.toCharArray();
for( int i=0; i<ch.length; i++)
    System.out.println("in array a1= "+ch[i]);


0

আপনি যদি তৃতীয় পক্ষের API এর উপর নির্ভর করতে না চান তবে এখানে JDK7 বা তার নিচে একটি কার্য কোড is আমি উপরের অন্যান্য সমাধানগুলির দ্বারা অস্থায়ী চরিত্রের বিষয়গুলি ইনস্ট্যান্ট করছি না। ফোরচ লুপগুলি আরও পঠনযোগ্য, নিজেকে দেখুন :)

public static Character[] convertStringToCharacterArray(String str) {
    if (str == null || str.isEmpty()) {
        return null;
    }
    char[] c = str.toCharArray();
    final int len = c.length;
    int counter = 0;
    final Character[] result = new Character[len];
    while (len > counter) {
        for (char ch : c) {
            result[counter++] = ch;
        }
    }
    return result;
}

0

আমি ব্যবহৃত StringReader মধ্যে বর্গ java.io । এর read(char[] cbuf)একটি ফাংশন অ্যারেতে স্ট্রিংয়ের বিষয়বস্তু পড়ে।

String str = "hello";
char[] array = new char[str.length()];
StringReader read = new StringReader(str);

try {
    read.read(array); //Reads string into the array. Throws IOException
} catch (IOException e) {
    e.printStackTrace();
}

for (int i = 0; i < str.length(); i++) {
        System.out.println("array["+i+"] = "+array[i]);
}

এটি চালানো আপনাকে আউটপুট দেয়:

array[0] = h
array[1] = e
array[2] = l
array[3] = l
array[4] = o
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.