मैं एक गेम सर्वर लागू कर रहा हूं और एक स्ट्रिंग के रूप में गेम बोर्ड का प्रतिनिधित्व कर रहा हूं, इस स्थिति को एक उदाहरण के रूप में लें:

String b = ", a36, a32, a26, a40, a295, a41, a49, /, , a16, a09, a68, a11, a99, ,"

मैं इस स्ट्रिंग को निम्न स्ट्रिंग सरणी में कनवर्ट करना चाहता हूं:

[, a36, a32, a26, a40, a295, a41, a49, , , , a16, a09, a68, a11, a99, ]

मैंने String.split का उपयोग करने की कोशिश की:

String[] bArray = b.split("/|,");

यह प्रदान करता है:

boardArray = [, a36, a32, a26, a40, a295, a41, a49, , , , a16, a09, a68, a11, a99]

यह मेरे इच्छित सरणी में अंतिम " " तत्व को काट देता है। मेरे कोड को संशोधित करने और अंतिम तत्व को मैन्युअल रूप से जोड़ने के बाद:

String[] bArray = b.split("/|,");
bArray = Arrays.copyOf(bArray, bArray.length + 1);
bArray[bArray.length - 1] = "";

यह मुझे सही परिणाम देता है, लेकिन यह समाधान अक्षम है। क्या किसी के पास यह विचार है कि इसे और अधिक सफाई से कैसे किया जाए?

1
J. Hodge 30 जिंदा 2020, 01:02

3 जवाब

सबसे बढ़िया उत्तर

ये कोशिश करें:

b.split("/|,", -1);

यह सीमा पैरामीटर (दूसरा वाला) और दस्तावेज़ कहते हैं:

सीमा पैरामीटर पैटर्न को लागू करने की संख्या को नियंत्रित करता है और इसलिए परिणामी सरणी की लंबाई को प्रभावित करता है। यदि सीमा n शून्य से अधिक है, तो पैटर्न को अधिकतम n-1 बार लागू किया जाएगा, सरणी की लंबाई n से अधिक नहीं होगी, और सरणी की अंतिम प्रविष्टि में अंतिम मिलान सीमांकक से परे सभी इनपुट होंगे। यदि n गैर-सकारात्मक है तो पैटर्न को जितनी बार संभव हो लागू किया जाएगा और सरणी की कोई भी लंबाई हो सकती है। यदि n शून्य है तो पैटर्न को जितनी बार संभव हो लागू किया जाएगा, सरणी की कोई भी लंबाई हो सकती है, और पिछली खाली स्ट्रिंग्स को छोड़ दिया जाएगा।

4
Renato 30 जिंदा 2020, 01:20

जैसा कि पिछले प्रश्न में बताया गया है, जावा का यह व्यवहार है जैसे अकरण।

कभी-कभी आपको खुद को नई कार्यक्षमताओं को लागू करना पड़ता है, लेकिन शायद यह एक साफ समाधान नहीं है।

0
user12728425user12728425 30 जिंदा 2020, 01:13

एक List<String> पर लोड करने और उस सूची के माध्यम से पुनरावृति करने का प्रयास करें।

String b = ", a36, a32, a26, a40, a295, a41, a49, /, , a16, a09, a68, a11, a99, ,";
List<String> myList = Arrays.asList(b.split(","));
System.out.println(myList);

आउटपुट:

[,  a36,  a32,  a26,  a40,  a295,  a41,  a49,  /,  ,  a16,  a09,  a68,  a11,  a99,  ]
1
Renato 30 जिंदा 2020, 01:24