2012-03-25 10 views
25

मैं बस सोच रहा था कि सूची के सभी तत्वों से सफेद स्थान को हटाने का सबसे अच्छा तरीका क्या होगा।सरणी में सभी तत्वों से सफेद स्थान को कैसे ट्रिम करें?

उदाहरण के लिए अगर मैं String [] array = {" String", "Tom Selleck "," Fish "} मैं कैसे के रूप में {"String","Tom Selleck","Fish"}

धन्यवाद सभी तत्वों को मिल सकता है था!

+3

लूप के साथ? ... –

उत्तर

47

पर array[i].trim() फोन इस प्रयास करें:

String[] trimmedArray = new String[array.length]; 
for (int i = 0; i < array.length; i++) 
    trimmedArray[i] = array[i].trim(); 

अब trimmedArrayarray रूप में एक ही तार शामिल हैं, लेकिन प्रमुख और रिक्त स्थान को अनुगामी बिना। वैकल्पिक रूप से, आप एक ही सरणी में यथा-स्थान तार को संशोधित करने के लिए इस लिख सकते हैं:

for (int i = 0; i < array.length; i++) 
    array[i] = array[i].trim(); 
5

तुम बस सरणी में तत्वों से अधिक पुनरावृति कर सकते हैं और प्रत्येक तत्व

+6

और 'सरणी [i] 'पर वापस असाइन करना याद रखें !!!! अन्यथा पुनरावृत्ति का कोई प्रभाव नहीं पड़ेगा। – amit

+0

आपको कहीं भी छंटनी तारों को स्टोर करना होगा, लेकिन जरूरी नहीं कि 'सरणी [i] 'में। ओपी की जरूरतों के आधार पर उन्हें दूसरी सरणी में स्टोर करना बेहतर हो सकता है – hehewaffles

+2

उनका प्रश्न ['सभी तत्वों से सफेद जगह को हटाने के लिए ...'] सुझाव देता है कि वह मौजूदा मूल्यों को छंटनी तारों के साथ ओवरराइड करना चाहता है, इसलिए यदि यह वास्तव में मामला है - आपको उसे वापस सरणी [i] ' – amit

-2
String val = "hi hello prince"; 
String arr[] = val.split(" "); 

for (int i = 0; i < arr.length; i++) 
{ 
    System.out.print(arr[i]); 
} 
+0

पर संग्रहीत करने की आवश्यकता होगी, आपको प्रदान करना चाहिए, आपका कोड क्यों काम करता है? शायद ओपी को अतिरिक्त जानकारी चाहिए। –

6

मैं जानता हूँ कि यह एक बहुत पुराने पोस्ट है, लेकिन जावा 1.8 के बाद से वहाँ हर स्ट्रिंग ट्रिम करने के लिए एक अच्छा तरीका है एक सरणी में

जावा 8 Lamda अभिव्यक्ति समाधान:

List<String> temp = new ArrayList<>(Arrays.asList(yourArray)); 
temp.forEach(e -> {temp.set((temp.indexOf(e), e.trim()}); 
yourArray = temp.toArray(new String[temp.size()]); 

इस समाधान के साथ आप एक नया सरणी बनाने के लिए नहीं है।
तरह Oscar Lopez के समाधान में

+1

बस एक मामूली संपादन: 'temp.forEach (e -> {temp.set (temp.indexOf (e), s.trim());}); ', अन्यथा यह मुझे एक वाक्यविन्यास त्रुटि देता है। –

12

एक और जावा 8 लैम्ब्डा विकल्प:

String[] array2 = Arrays.stream(array).map(String::trim).toArray(String[]::new); 

और नई सरणी निर्माण के बिना बदसूरत लेकिन अनुकूलित संस्करण

Arrays.stream(array).map(String::trim).toArray(unused -> array); 

मूल "सरणी" संशोधित किया गया है।

4

जावा 8 में, Arrays.parallelSetAll इस उद्देश्य के लिए बनाया तैयार लगता है:

import java.util.Arrays; 

Arrays.parallelSetAll(array, (i) -> array[i].trim()); 

इस जगह में मूल सरणी को संशोधित करेगा, लैम्ब्डा अभिव्यक्ति का परिणाम के साथ प्रत्येक तत्व का स्थान लिया।

6

अपने एप्लिकेशन निर्माण पथ में commons-lang3-3.1.jar जोड़ें। स्ट्रिंग सरणी को ट्रिम करने के लिए नीचे दिए गए कोड स्निपेट का उपयोग करें।

String array = {" String", "Tom Selleck "," Fish "}; 
array = StringUtils.stripAll(array); 
संबंधित मुद्दे