में स्ट्रिंग से अंकों को पार करने के बेहतर तरीके पर सहायता करें मेरे पास एक स्ट्रिंग है जिसमें अंक और अक्षर हैं। मैं स्ट्रिंग को अंकों के संगत हिस्सों और अक्षरों के संगत हिस्सों में विभाजित करना चाहता हूं।जावा
स्ट्रिंग "34A312O5M444123A" पर विचार करें। [ "34", "ए ',' 312 '," ओ "," 5 "," एम "," 444,123 "," A "है]
मेरे पास है:
मैं करने के लिए उत्पादन करना चाहते हैं कोड है जो काम करता है और जैसा दिखता है:
List<String> digitsAsElements(String str){
StringBuilder digitCollector = new StringBuilder();
List<String> output = new ArrayList<String>();
for (int i = 0; i < str.length(); i++){
char cChar = str.charAt(i);
if (Character.isDigit(cChar))
digitCollector.append(cChar);
else{
output.add(digitCollector.toString());
output.add(""+cChar);
digitCollector = new StringBuilder();
}
}
return output;
}
मैं बंटवारे str दो बार माना सभी नंबरों हिस्सा और एक सरणी सभी पत्र मात्रा युक्त युक्त एक सरणी प्राप्त करने के लिए। फिर परिणाम विलय। मैं इससे दूर झुक गया क्योंकि यह पठनीयता को नुकसान पहुंचाएगा।
मैंने जानबूझकर इसे रेगेक्स पैटर्न के साथ हल करने से बचाया है क्योंकि मुझे रेगेक्स पैटर्न को पठनीयता के लिए एक बड़ी बाधा माना जाता है।
- डिबगर्स उन्हें अच्छी तरह से संभाल नहीं पाते हैं।
- वे स्रोत कोड पढ़ने वाले किसी के प्रवाह को बाधित करते हैं।
- ओवरटाइम रेगेक्स व्यवस्थित रूप से बढ़ता है और राक्षस बन जाता है।
- वे गहराई से सहज नहीं हैं।
मेरे प्रश्न हैं:
- कैसे मैं ऊपर कोड की पठनीयता में सुधार कर सकता है?
- क्या ऐसा करने का कोई बेहतर तरीका है? एक ऐसी कक्षा जो इस समस्या को सुन्दरता से हल करती है।
- आप regEx का उपयोग करने और ऊपर लिखे गए कुछ के समान कुछ कोडिंग के बीच रेखा को कहां खींचते हैं?
- आप regExes की पठनीयता/रखरखाव कैसे बढ़ाते हैं?
ध्यान दें कि लिखा गया आपका कोड स्ट्रिंग को "[34, ए, 312, ओ, 5, एम, एन, आई, 444123, ए]" में बदल देता है, जो आप नहीं कह रहे हैं कि आप उम्मीद कर रहे हैं । मैं सही कोड पोस्ट करने जा रहा था, लेकिन जोहान्स रोस्सेल ने मुझे बेहतर जवाब दिया। –
शब्द, अच्छी पकड़। –