मुझे स्ट्रिंग को सिंगल कैरेक्टर स्ट्रिंग्स की सरणी में विभाजित करने की आवश्यकता है।चरित्र तारों की सरणी में स्ट्रिंग स्ट्रिंग
जैसे, बंटवारे "बिल्ली"
मुझे स्ट्रिंग को सिंगल कैरेक्टर स्ट्रिंग्स की सरणी में विभाजित करने की आवश्यकता है।चरित्र तारों की सरणी में स्ट्रिंग स्ट्रिंग
जैसे, बंटवारे "बिल्ली"
"cat".split("(?!^)")
यह उत्पादन करेगा
सरणी [ "सी", "एक", "टी"]
कैसे और क्यों? क्या यह किसी रेगेक्स का अर्थ है किसी चरित्र? क्योंकि मेरे दिमाग में, विभाजन के तरीके के साथ, यह केवल वास्तविक पात्रों (,?,!, ^, और) पर विभाजित होना चाहिए। हालांकि, यह काम करता है जैसा कि आप कहते हैं। – TyP
यह वास्तव में एक रेगेक्स-अभिव्यक्ति है, जिसे नकारात्मक दिखने वाला कहा जाता है। यहाँ प्रलेखन चेकआउट: (?! '...') http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html#sum – Erwin
@ ईडब्ल्यू-CodeMonkey '' ऋणात्मक दावे के लिए रेगेक्स वाक्यविन्यास है - यह दावा करता है कि इसके अंदर क्या है इसका कोई मिलान नहीं है। और '^' स्ट्रिंग की शुरुआत से मेल खाता है, इसलिए रेगेक्स प्रत्येक स्थिति पर मेल खाता है जो * स्ट्रिंग की शुरुआत नहीं है, और वहां एक विभाजन को सम्मिलित करता है। यह regex स्ट्रिंग के अंत में भी मेल खाता है और इसलिए परिणाम के लिए एक खाली स्ट्रिंग भी जोड़ देगा, सिवाय इसके कि 'String.split' दस्तावेज़ [कहता है] (https://docs.oracle.com/javase/8/docs /api/java/lang/String.html#split-java.lang.String-) "अनुगामी रिक्त स्ट्रिंग जिसके परिणामस्वरूप सरणी में शामिल नहीं हैं।" – Boann
String str = "cat";
char[] cArray = str.toCharArray();
+1 लेकिन ओपी शायद स्ट्रिंग की सरणी चाहता है। –
nitpicking, मूल प्रश्न स्ट्रिंग की एक सरणी, नहीं चार की एक सरणी के लिए पूछता है। हालांकि यहां से स्ट्रिंग की सरणी प्राप्त करना काफी आसान है। – dsolimano
हाँ, मुझे पहले से ही पता है कि वर्णों की सरणी कैसे प्राप्त करें। मैं सिर्फ चार सरणी के माध्यम से पुनरावृत्ति कर सकता हूं और यदि कोई अन्य तरीका नहीं है, तो प्रत्येक से एक स्ट्रिंग बनाएं। – Matt
शायद तुम पाश के लिए एक का उपयोग कर सकते सरणी "सी", "एक", "टी" कि स्ट्रिंग सामग्री के माध्यम से चला जाता है देने के लिए और वर्ण के आधार पर पात्रों को निकालने होगा charAt
विधि का उपयोग कर।
उदाहरण के लिए ArrayList<String>
के साथ संयुक्त आप व्यक्तिगत पात्रों की अपनी सरणी प्राप्त कर सकते हैं।
शायद आप एक पैर पर खड़े हो सकते हैं और "गॉड सेव द रानी" गा सकते हैं। क्षमा करें, लेकिन यह सही के करीब भी नहीं है। –
स्ट्रिंग क्लास की getChars() विधि पर एक नज़र डालें। जो एक खाली पहला परिणाम प्रदान करेंगे:
बहुत जटिल। अन्य उत्तर बहुत सरल समाधान –
"cat".toCharArray()
लेकिन तुम तार
"cat".split("")
संपादित करें की आवश्यकता है।
"बिल्ली" .split ("") वापसी होगी [, सी, एक, टी], कोई है? आप अपने सरणी में "बिल्ली" .split ("") के रूप में मैट से उम्मीद काम नहीं करता है एक अतिरिक्त चरित्र होगा ... – reef
, तो आप एक अतिरिक्त रिक्त स्ट्रिंग => [, सी, एक, टी] मिल जाएगा। – reef
इस उत्तर अब अगर आप जावा 8. उपयोग कर रहे हैं काम करता है http://stackoverflow.com/a/22718904/1587046 –
की एक सरणी में एक स्ट्रिंग मोड़ का एक कारगर तरीका एक-चरित्र स्ट्रिंग्स यह करना होगा:
String[] res = new String[str.length()];
for (int i = 0; i < str.length(); i++) {
res[i] = Character.toString(str.charAt(i));
}
हालांकि, यह इस तथ्य का अधिक नहीं लेता है कि char
String
में वास्तव में यूनिकोड कोड-पॉइंट के आधे हिस्से का प्रतिनिधित्व कर सकता है। (यदि कोड-पॉइंट बीएमपी में नहीं है।) इससे निपटने के लिए आपको कोड पॉइंट्स के माध्यम से पुन: प्रयास करना होगा ... जो अधिक जटिल है।
यह दृष्टिकोण String.split(/* clever regex*/)
का उपयोग करने से तेज़ होगा, और यह संभवतः जावा 8+ धाराओं का उपयोग करने से तेज़ होगा। यह इस से संभावित तेजी से होता है: एक नई सरणी के लिए पात्रों
String[] res = new String[str.length()];
int 0 = 0;
for (char ch: str.toCharArray[]) {
res[i++] = Character.toString(ch);
}
क्योंकि toCharArray
प्रतिलिपि गया है।
Basic Multilingual Plane परे वर्णों को इनपुट (कुछ CJK अक्षर, नए इमोजी ...) पर उम्मीद कर रहे हैं, तो इस तरह के दृष्टिकोण के रूप में "ab".split("(?!^)")
नहीं किया जा सकता है, क्योंकि वे (array ["a", "?", "?", "b"]
में परिणाम) इस तरह के पात्रों को तोड़ने और कुछ सुरक्षित इस्तेमाल किया जाएगा:
"ab".codePoints()
.mapToObj(cp -> new String(Character.toChars(cp)))
.toArray(size -> new String[size]);
अन्य उत्तर संक्षेप में ...
यह सब जावा संस्करणों पर काम करता है:
"cat".split("(?!^)")
जावा 8 पर और ऊपर यह केवल काम करता है:
"cat".split("")
http://stackoverflow.com/questions/1521921/splitting-words-into-letters-in-java – birryree
एक त्वरित संदर्भ, "" के रूप में।शामिल हों (["सी", "ए", "टी"]) "बिल्ली" वापस पाने के लिए। – shuva