如何从数组中的所有元素修剪空白?

Tom*_*eck 36 java arrays string

我只是想知道从列表的所有元素中删除空格的最佳方法是什么.

例如,如果我有,我 String [] array = {" String", "Tom Selleck "," Fish "} 怎么能得到所有的元素{"String","Tom Selleck","Fish"}

谢谢!

Ósc*_*pez 57

试试这个:

String[] trimmedArray = new String[array.length];
for (int i = 0; i < array.length; i++)
    trimmedArray[i] = array[i].trim();
Run Code Online (Sandbox Code Playgroud)

现在trimmedArray包含相同的字符串array,但没有前导和尾随空格.或者,您可以编写此代码以在同一数组中就地修改字符串:

for (int i = 0; i < array.length; i++)
    array[i] = array[i].trim();
Run Code Online (Sandbox Code Playgroud)


use*_*998 21

另一个java 8 lambda选项:

String[] array2 = Arrays.stream(array).map(String::trim).toArray(String[]::new);
Run Code Online (Sandbox Code Playgroud)

而没有新阵列创建的丑陋但优化的版本

Arrays.stream(array).map(String::trim).toArray(unused -> array);
Run Code Online (Sandbox Code Playgroud)

原始的"数组"被修改.


blu*_*ter 15

在应用程序构建路径中添加commons-lang3-3.1.jar.使用下面的代码片段修剪String数组.

String array = {" String", "Tom Selleck "," Fish "};
array = StringUtils.stripAll(array);
Run Code Online (Sandbox Code Playgroud)


小智 9

在Java 8中,Arrays.parallelSetAll似乎已经为此目的做好了准备:

import java.util.Arrays;

Arrays.parallelSetAll(array, (i) -> array[i].trim());
Run Code Online (Sandbox Code Playgroud)

这将修改原始数组,用lambda表达式的结果替换每个元素.


Yve*_*eth 6

我知道这是一个非常古老的帖子,但是从Java 1.8开始,有一种更好的方法来修剪数组中的每个String.

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()]);
Run Code Online (Sandbox Code Playgroud)

使用此解决方案,您无需创建新阵列.
就像ÓscarLópez的解决方案一样