स्ट्रिंग को जावा में "चरित्र" सरणी में परिवर्तित करना


108

मैं वर्ण वर्ग Stringकी वस्तुओं की एक सरणी में बदलना चाहता हूं, लेकिन मैं रूपांतरण करने में असमर्थ हूं। मुझे पता है कि मैं आदिम डेटाप्रकार प्रकार के साथ "चार" की एक सरणी के लिए एक स्ट्रिंग में बदल सकते हैं विधि लेकिन इसके बारे में ऑब्जेक्ट की श्रृंखला के लिए एक स्ट्रिंग परिवर्तित करने में मदद नहीं करता है चरित्र प्रकार।toCharArray()

मैं ऐसा करने के बारे में कैसे जाना होगा?


6
आप "चरित्र सरणी के साथ फिट नहीं है" से क्या मतलब है?
बारजू

क्या आप इसे फिर से शब्द बना सकते हैं या थोड़ा और अधिक स्पष्ट कर सकते हैं, या शायद एक कोड उदाहरण प्रदान कर सकते हैं?
6

परिवर्तित करने के charलिए Character, का उपयोग करें Character.valueOf(mychar)। यदि यह एक सरणी है, तो प्रत्येक तत्व को लूप करें और कन्वर्ट करें।
ईई।

जावा को एक मैप फंक्शन, लैम्ब्डा एक्सप्रेशन चाहिए।
एरिक हार्टफोर्ड 21:13

जवाबों:



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;
}

यदि बहुत बड़ा स्ट्रिंग है तो बहुत से कैरेक्टर ऑब्जेक्ट्स तुरंत हो जाएंगे।
realPK

2
क्यों न खुद थोड़ा तरीका लिखा जाए? क्योंकि एक विधि पहले से ही मौजूद है (toCharArray ()), और वह विधि जो पहले से मौजूद है, में उस फ़ंक्शन के प्रदर्शन और विश्वसनीयता की गारंटी देने के लिए कहीं अधिक इंजीनियर समर्पित हैं, जो स्टैकओवरफ़्लो पोस्ट से कॉपी / पेस्ट किया जा सकता है।
होल्डऑफहंगर

1
@HoldOffHunger आप बिल्कुल सही हैं। हालाँकि ,CharArray () ओपी की ज़रूरत के अनुसार कैरेक्टर ऑब्जेक्ट के बजाय एलीमेटिक प्रकार की सरणी देता है। ज़रूर, आप इसे []] में बदलने के लिए फिर से चार [] के माध्यम से लूप कर सकते हैं। लेकिन, कैरेक्टर ऑब्जेक्ट बनाने वाले एक स्ट्रिंग एड के माध्यम से लूपिंग करना इतना आसान है कि मैं यह नहीं देख पा रहा हूं कि अगर आप तीसरे नंबर की लाइब्रेरी में नहीं लाना चाहते हैं तो सिर्फ अपना ही रोल क्यों न करें।
एल्विन

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
यह बिल्कुल नहीं है कि ओपी क्या पूछ रहा था।
Qix - मोनासा

3

String#toCharArraycharआपके पास एक सरणी है , जो आपके पास है Character। ज्यादातर मामलों में यह फर्क नहीं पड़ता अगर आप का उपयोग करें charया Characterके रूप में वहाँ है autoboxing । आपके मामले में समस्या यह है कि सरणियाँ ऑटोबॉक्स्ड नहीं हैं, मेरा सुझाव है कि आप एक वर्ण का उपयोग करें ( 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

इसे करने का दूसरा तरीका।

String str="I am a good boy";
    char[] chars=str.toCharArray();

    Character[] characters=new Character[chars.length];
    for (int i = 0; i < chars.length; i++) {
        characters[i]=chars[i];
        System.out.println(chars[i]);
    }

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);

चरित्र सरणी में कनवर्ट करने का लाभ आप सरणी को उप सरणी प्राप्त करने के लिए Arrays.stream funtion का उपयोग कर सकते हैं

String subStringFromCharacterArray = 

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

0

यदि आप JTextField के साथ काम कर रहे हैं तो यह सहायक हो सकता है।

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

जंजीर हमेशा सबसे अच्छा है: डी

String str = "somethingPutHere";
Character[] c = ArrayUtils.toObject(str.toCharArray());

1
chaining is always bestअसत्य।
Qix - मोनिका ने

1
ArrayUtils JDK का हिस्सा नहीं है।
mbmast

0

यदि आप तृतीय पक्ष API पर निर्भर नहीं होना चाहते हैं, तो यहां JDK7 या उससे नीचे का काम कोड है। जैसा कि ऊपर के अन्य समाधानों के द्वारा किया गया है, मैं अस्थायी वर्ण वस्तुओं को तात्कालिक नहीं कर रहा हूँ। foreach छोरों अधिक पठनीय हैं, खुद देखें :)

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

मैंने java.io में StringReader क्लास का उपयोग किया । इसमें से एक कार्य एक स्ट्रिंग की सामग्री को एक सरणी में पढ़ता है।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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.