2011-10-18 9 views
44

मैं स्पेस के आधार पर String कैसे विभाजित करूं लेकिन एक शब्द के रूप में उद्धृत सबस्ट्रिंग्स ले सकता हूं?जावा में रिक्त स्थान पर स्प्लिट स्ट्रिंग, सिवाय इसके कि अगर कोट्स के बीच (यानी एक "टोकन के रूप में " हैलो वर्ल्ड "का इलाज करें)

उदाहरण:

Location "Welcome to india" Bangalore Channai "IT city" Mysore 

यह

Location 
Welcome to india 
Bangalore 
Channai 
IT city 
Mysore 

उत्तर

-1

दोहरे उद्धरण चिह्नों के लिए सबसे पहले विभाजन के रूप में ArrayList में संग्रहित किया जाना चाहिए:

String s = 'Location "Welcome to india" Bangalore Channai "IT city" Mysore'; 
String[] splitted = s.split('"'); 

तो रिक्त स्थान splitted सरणी

में प्रत्येक स्ट्रिंग का उपयोग विभाजित
for(int i = 0; i< splitted.length; i++){ 
    //split each splitted cell and store in your arraylist 
} 
+2

लेकिन फिर 'एक बी \ "सी डी \" 'बी" और "सी डी" 'में विभाजित हो जाएगा, है ना? आप कैसे निर्धारित करेंगे कि उनमें से कौन सा आगे विभाजित होगा? – aioobe

+0

आप सही हैं। ठीक है, आप स्ट्रिंगटोकनाइज़र का उपयोग कर सकते हैं और विभाजक को पहले चरण के लिए रख सकते हैं, और उसके बाद टोकन (\ "या एक स्ट्रिंग) की जांच कर सकते हैं ताकि यह निर्धारित किया जा सके कि आगे विभाजन हो या नहीं। –

+0

मैंने स्ट्रिंगटोकनाइज़र को देखा, और यह भारी * delimiters *, आप इस मामले में डेलीमीटर के रूप में क्या उपयोग करेंगे? – aioobe

107

ऐसे करें:

String str = "Location \"Welcome to india\" Bangalore " + 
      "Channai \"IT city\" Mysore"; 

List<String> list = new ArrayList<String>(); 
Matcher m = Pattern.compile("([^\"]\\S*|\".+?\")\\s*").matcher(str); 
while (m.find()) 
    list.add(m.group(1)); // Add .replace("\"", "") to remove surrounding quotes. 


System.out.println(list); 

आउटपुट:

[Location, "Welcome to india", Bangalore, Channai, "IT city", Mysore] 

नियमित अभिव्यक्ति बस का कहना है

  • [^"]           - के अलावा कुछ के साथ शुरू टोकन "
  • \S*             - एक " - शून्य या अधिक गैर स्पेस वर्णों
  • ... या ...
  • ".+?"       द्वारा पीछा किया - प्रतीक जो भी हो, " तक।
+0

स्थान, "भारत में आपका स्वागत है", बैंगलोर, चैनई, "आईटी शहर", मैसूर यह एक स्ट्रिंग है जिसे मैं जेएसपी फॉर्म में प्रवेश कर रहा हूं, सबमिट करने के बाद इसे विभाजित किया जाना चाहिए क्योंकि यह प्रश्न – user1000535

+0

डबल कोट में नहीं है वहां – user1000535

+3

आह हो, 'm.group (1)' से 'm.group (1) बदलें।" जगह "(" \ "", "") '। – aioobe

संबंधित मुद्दे