2012-03-25 4 views
25

Мне просто интересно, какой лучший способ удалить пустое пространство из всех элементов списка.Как обрезать пробел из всех элементов массива?

Например, если бы я String [] array = {" String", "Tom Selleck "," Fish "} Как я мог получить все элементы, как {"String","Tom Selleck","Fish"}

Спасибо!

+3

С петлей? ... –

ответ

47

Попробуйте это:

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

Теперь trimmedArray содержит те же строки, как array, но без начальных и конечных пробелов. Кроме того, вы могли бы написать это для изменения строк на месте в том же массиве:

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

Вы можете просто перебирать элементы в массиве и вызвать array[i].trim() по каждому элементу

+6

и не забудьте назначить обратно 'array [i]' !!!! иначе итерация не будет иметь никакого эффекта. – amit

+0

Вам нужно будет хранить обрезанные строки где-нибудь, но не обязательно в 'array [i]'. Возможно, было бы лучше сохранить их во втором массиве, в зависимости от потребностей OP – hehewaffles

+2

Его вопрос ['удалить пустое пространство из всех элементов ...'] предполагает, что он хочет переопределить текущие значения с помощью обрезанных строк, поэтому, если это в самом деле - вам нужно сохранить его обратно в 'array [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

Вы должны указать, почему ваш код работает? Возможно, OP нуждается в дополнительной информации. –

6

Я знаю, что это очень старый пост, но так как Java 1.8 есть более хороший способ, чтобы обрезать каждую строку в массиве.

Java 8 Lamda решение Expression:

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()]); 

с этим решением, вы не должны создать новый массив.
Как и в растворе Óscar Лопеса

+1

Просто небольшое редактирование: temp.forEach (e -> {temp.set (temp.indexOf (e), s.trim());}); ', в противном случае это дает мне синтаксическую ошибку. –

12

Другой вариант Java 8 лямбда:

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

И некрасиво, но оптимизированная версия без создания нового массива

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

Оригинал "массив" модифицируется.

4

В Java 8, Arrays.parallelSetAll, кажется, готова для этой цели:

import java.util.Arrays; 

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

Это изменит исходный массив на месте, заменяя каждый элемент с результатом лямбда-выражения.

6

Включите commons-lang3-3.1.jar в свой путь построения приложения. Используйте приведенный ниже фрагмент кода для обрезки массива String.

String array = {" String", "Tom Selleck "," Fish "}; 
array = StringUtils.stripAll(array); 
Смежные вопросы