जावा में स्ट्रिंग से स्ट्रिंग सरणी रूपांतरण


115

मैं string = "name"; एक स्ट्रिंग सरणी में परिवर्तित करना चाहते हैं। मैं यह कैसे करुं? क्या कोई जावा फ़ंक्शन में बनाया गया है? मैन्युअल रूप से मैं यह कर सकता हूं, लेकिन मैं फ़ंक्शन में निर्मित जावा की खोज कर रहा हूं।

मुझे एक सरणी चाहिए जहां स्ट्रिंग का प्रत्येक वर्ण एक स्ट्रिंग होगा। जैसे कि 'n' अब एक स्ट्रिंग में संग्रहीत "n" होगा।


10
मुझे लगता है कि आपका मतलब यह नहीं है कि आपको String[] ary = new String[] { "name" };किस ऑपरेशन की ज़रूरत है? उदाहरण के लिए पात्रों में विभाजन?
आरपी

क्या आप एक स्ट्रिंग सरणी का मतलब है? आप इसके लिए एक समारोह कैसे कर सकते हैं, यह सिर्फ होगा: स्ट्रिंग [] सरणी = {"नाम"}; या आप एक चरित्र सरणी मतलब है?
वुडी

1
मुझे एक सरणी चाहिए जहां स्ट्रिंग का प्रत्येक वर्ण एक स्ट्रिंग होगा। जैसे char 'n' अब स्ट्रिंग होगा "n" एक
अरेंज

जवाबों:


200

अपने असाइनमेंट पर आपको शुरू करने के लिए, String.splitएक नियमित अभिव्यक्ति पर स्ट्रिंग्स को विभाजित करता है और यह अभिव्यक्ति एक खाली स्ट्रिंग हो सकती है:

String[] ary = "abc".split("");

सरणी देता है:

(java.lang.String[]) [, a, b, c]

खाली पहली प्रविष्टि से छुटकारा पाना पाठक के लिए एक अभ्यास के रूप में बचा है :-)

नोट: जावा 8 में, खाली पहला तत्व अब शामिल नहीं है।


21
नोट: jdk8 का उपयोग करते हुए, रिक्त पहली प्रविष्टि अब परिणामी सरणी में शामिल नहीं है। देखें stackoverflow.com/questions/22718744/...
एलेक्सिस सी

42
String strName = "name";
String[] strArray = new String[] {strName};
System.out.println(strArray[0]); //prints "name"

दूसरी पंक्ति 1 की लंबाई के साथ एक स्ट्रिंग सरणी आवंटित करती है। ध्यान दें कि आपको स्वयं एक लंबाई निर्दिष्ट करने की आवश्यकता नहीं है, जैसे:

String[] strArray = new String[1];

इसके बजाय, लंबाई initalizer में तत्वों की संख्या से निर्धारित होती है। का उपयोग करते हुए

String[] strArray = new String[] {strName, "name1", "name2"};

3 की लंबाई के साथ एक सरणी बनाता है।


22
वास्तव में सवाल का जवाब नहीं देता है।
atamanroman

1
प्रश्न के संशोधन इतिहास की जांच करें और आप देखेंगे कि प्रश्न संपादित होने से पहले कुछ अलग करने के लिए कह रहा है। यह उत्तर पहले संस्करण का उत्तर देता है।
f1sh

14

मान लें कि आप वास्तव में एकल-वर्ण स्ट्रिंग्स का एक सरणी चाहते हैं ( char[]या नहीं Character[])

1. एक regex का उपयोग करना:

public static String[] singleChars(String s) {
    return s.split("(?!^)");
}

शून्य चौड़ाई नकारात्मक लुकहेड इनपुट की शुरुआत में पैटर्न मिलान को रोकता है, इसलिए आपको एक अग्रणी खाली स्ट्रिंग नहीं मिलती है।

2. अमरूद का उपयोग :

import java.util.List;

import org.apache.commons.lang.ArrayUtils;

import com.google.common.base.Functions;
import com.google.common.collect.Lists;
import com.google.common.primitives.Chars;

// ...

public static String[] singleChars(String s) {
    return
        Lists.transform(Chars.asList(s.toCharArray()),
                        Functions.toStringFunction())
             .toArray(ArrayUtils.EMPTY_STRING_ARRAY);
}

1
वह regexp सबसे अच्छा IMO है। सावधान रहें कि जावा 8 ने उस विशेष मुद्दे को वैसे भी तय किया।
shkschneider

13

मुझे लगता है कि इसकी कोई आवश्यकता नहीं है, क्योंकि यह इससे अधिक सरल नहीं होगा

String[] array = {"name"};

यदि आप जोर देते हैं, तो आप लिख सकते हैं:

static String[] convert(String... array) {
   return array;
}

String[] array = convert("name","age","hobby"); 

[संपादित करें] यदि आप एकल-अक्षर स्ट्रिंग्स चाहते हैं, तो आप उपयोग कर सकते हैं:

String[] s = "name".split("");

दुर्भाग्य से s [0] खाली होगा, लेकिन इसके बाद n, a, m, e अक्षर का पालन होगा। यदि यह एक समस्या है, तो आप पहले सरणी प्रविष्टि से छुटकारा पाने के लिए उदाहरण के लिए System.arrayCopy का उपयोग कर सकते हैं।


मुझे एक ऐसा सरणी चाहिए जहां स्ट्रिंग का प्रत्येक वर्ण अब स्वयं एक स्ट्रिंग होगा। जैसे char 'n' अब स्ट्रिंग होगा "n" एक
अरेंज

@ लेन्डी मेरे पास यह स्ट्रिंग तिथि = "2013/01/05" है और जब मैं .split ("/") का उपयोग करता हूं, तो यह खाली स्ट्रिंग को [0] के रूप में वापस नहीं करता है और यह ठीक काम करता है। क्या मेरी नियमित अभिव्यक्ति फाड़नेवाला और तुम्हारे बीच कोई अंतर है?
बेहजाद

@Behzad AFAIK आप केवल खाली पैटर्न के लिए खाली प्रविष्टि के साथ मजाकिया व्यवहार करते हैं, आप में से कुछ भी नहीं है।
लांडेई

@ लांडे मुझे बताएं कि मुझे आपका मतलब मिल गया है। आप इसका मतलब है कि केवल विभाजित समारोह रिटर्न में पहले सरणी मान के रूप में "" का उपयोग कर रहे हैं? हाँ?
बेहज़ाद

12
String data = "abc";
String[] arr = explode(data);

public String[] explode(String s) {
    String[] arr = new String[s.length];
    for(int i = 0; i < s.length; i++)
    {
        arr[i] = String.valueOf(s.charAt(i));
    }
    return arr;
}

11

जावा 8 में, एक विधि है जिसके साथ आप यह कर सकते हैं: करहरार ()

String k = "abcdef";
char[] x = k.toCharArray();

यह निम्न सरणी के लिए परिणाम है:

[a,b,c,d,e,f]

हालांकि एक स्ट्रिंग सरणी नहीं है, यह उन मामलों के लिए एकदम सही है जहां आपको String.charAt(0)अनावश्यक रूप से एकल चरित्र के तार पर मूर्खतापूर्ण पहुंच के बजाय पात्रों की आवश्यकता होती है ! ;)
वरूण

आप मेरे जीवन को बचाएं @fonji
अमित शर्मा

5

स्ट्रिंग सरणी = वर्णों की सरणी?

या क्या आपके पास कई शब्दों के साथ एक स्ट्रिंग है जिसमें से प्रत्येक को एक सरणी तत्व होना चाहिए?

String[] array = yourString.split(wordSeparator);


मुझे एक सरणी चाहिए जहां स्ट्रिंग का प्रत्येक वर्ण एक स्ट्रिंग होगा। जैसे char 'n' अब स्ट्रिंग होगा "n" एक
अरेंज

4

बस .toCharArray()जावा में विधि का उपयोग करें :

String k = "abc";
char[] alpha = k.toCharArray();

यह जावा 8 में ठीक काम करना चाहिए।


3

इसे टाइप करने के लिए कनवर्ट करें Char?

http://www.javadb.com/convert-string-to-character-array


1
यह क्यों ठुकराया गया है? यह उस तरह का दिखता है जैसा पूछा गया था (जितना मैं इसे वैसे भी समझ सकता हूं) के लिए ... ... हालांकि मुझे लगता है कि आपका मतलब है char[]=)
एक्सल

2

आप उपयोग कर सकते हैं string.chars().mapToObj(e -> new String(new char[] {e}));, हालांकि यह काफी लंबा है और केवल जावा 8 के साथ काम करता है। यहां कुछ और तरीके दिए गए हैं:

string.split(""); (Has an extra whitespace character at the beginning of the array if used before Java 8) string.split("|"); string.split("(?!^)"); Arrays.toString(string.toCharArray()).substring(1, string.length() * 3 + 1).split(", ");

पिछले एक बस अनावश्यक रूप से लंबा है, यह सिर्फ मनोरंजन के लिए है!


2

एक अतिरिक्त विधि:

जैसा कि पहले ही उल्लेख किया गया था, आप मूल स्ट्रिंग "नाम" को आसानी से एक चार सरणी में बदल सकते हैं:

String originalString = "name";
char[] charArray = originalString.toCharArray();

विचार की इस ट्रेन को जारी रखने के लिए, आप फिर चार्ट को सरणी स्ट्रिंग में बदल सकते हैं:

String[] stringArray = new String[charArray.length];
for (int i = 0; i < charArray.length; i++){
    stringArray[i] = String.valueOf(charArray[i]);
}

इस बिंदु पर, आपका stringArray आपके मूल स्ट्रिंग "नाम" से मूल मूल्यों से भर जाएगा। उदाहरण के लिए, अब कॉलिंग

System.out.println(stringArray[0]);

इस मामले में मान "n" (स्ट्रिंग के रूप में) वापस करेगा।


2

String.split () के साथ एक खाली स्ट्रिंग को विभाजित करना एक एकल तत्व सरणी देता है जिसमें एक खाली स्ट्रिंग होती है । ज्यादातर मामलों में आप शायद एक खाली सरणी, या एक शून्य प्राप्त करना पसंद करेंगे, यदि आप एक अशक्त में पारित हो गए, जो कि वास्तव में आपको org.apache.commons.lang3.StringUtils.split (str) के साथ मिलता है ।

import org.apache.commons.lang3.StringUtils;

StringUtils.split(null)       => null
StringUtils.split("")         => []
StringUtils.split("abc def")  => ["abc", "def"]
StringUtils.split("abc  def") => ["abc", "def"]
StringUtils.split(" abc ")    => ["abc"]

एक अन्य विकल्प google guava Splitter.split () और Splitter.splitToList () हैं जो एक पुनरावृत्तिकर्ता और एक सूची को इसी रूप में लौटाते हैं। अपाचे संस्करण के विपरीत फाड़नेवाला एक NPE पर फेंक देगा null:

import com.google.common.base.Splitter;

Splitter SPLITTER = Splitter.on(',').trimResults().omitEmptyStrings();

SPLITTER.split("a,b,   c , , ,, ")     =>  [a, b, c]
SPLITTER.split("")                     =>  []
SPLITTER.split("  ")                   =>  []
SPLITTER.split(null)                   =>  NullPointerException

यदि आप एक इट्रेटर के बजाय एक सूची चाहते हैं तो Splitter.splitToList () का उपयोग करें ।


1
/**
 * <pre>
 * MyUtils.splitString2SingleAlphaArray(null, "") = null
 * MyUtils.splitString2SingleAlphaArray("momdad", "") = [m,o,m,d,a,d]
 * </pre>
 * @param str  the String to parse, may be null
 * @return an array of parsed Strings, {@code null} if null String input
 */
public static String[] splitString2SingleAlphaArray(String s){
    if (s == null )
        return null;
    char[] c = s.toCharArray();
    String[] sArray = new String[c.length];
    for (int i = 0; i < c.length; i++) {
        sArray[i] = String.valueOf(c[i]);
    }
    return sArray;
}

विधि String.splitखाली 1 उत्पन्न करेगा, आपको इसे सरणी से निकालना होगा। यह बेकार है।


1

इस सवाल के शीर्षक के आधार पर, मैं एक स्ट्रिंग को कुछ परिसीमन द्वारा विभाजित पदार्थों के एक सरणी में बदलना चाहता था। मैं अन्य लोगों के लिए भी यही उत्तर यहां जोड़ूंगा।

यह हर स्थान पर स्ट्रिंग को विभाजित करके शब्दों की एक सरणी बनाता है:

String str = "string to string array conversion in java";
String delimiter = " ";
String strArray[] = str.split(delimiter);

यह निम्न सरणी बनाता है:

// [string, to, string, array, conversion, in, java]

स्रोत

जावा 8 में परीक्षण किया गया


1

यहाँ विभाजन विधि का उपयोग करके सरल स्ट्रिंग को स्ट्रिंग सरणी में परिवर्तित किया गया है।

String [] stringArray="My Name is ABC".split(" ");

उत्पादन

stringArray[0]="My";
stringArray[1]="Name";
stringArray[2]="is";
stringArray[3]="ABC";
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.