我只是想知道从列表的所有元素中删除空格的最佳方法是什么。
例如,如果我有String [] array = {" String", "Tom Selleck "," Fish "}
我怎样才能将所有元素都{"String","Tom Selleck","Fish"}
谢谢!
答案 0 :(得分:53)
试试这个:
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();
答案 1 :(得分:19)
另一个java 8 lambda选项:
String[] array2 = Arrays.stream(array).map(String::trim).toArray(String[]::new);
没有新阵列创建的丑陋但优化的版本
Arrays.stream(array).map(String::trim).toArray(unused -> array);
修改原始“数组”。
答案 2 :(得分:11)
在应用程序构建路径中添加commons-lang3-3.1.jar。 使用下面的代码片段修剪String数组。
String array = {" String", "Tom Selleck "," Fish "};
array = StringUtils.stripAll(array);
答案 3 :(得分: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()]);
使用此解决方案,您无需创建新阵列。 ˙喜欢ÓscarLópez的解决方案
答案 4 :(得分:6)
在Java 8中,Arrays.parallelSetAll
似乎已经为此目的做好了准备:
import java.util.Arrays;
Arrays.parallelSetAll(array, (i) -> array[i].trim());
这将修改原始数组,用lambda表达式的结果替换每个元素。
答案 5 :(得分:5)
您可以遍历数组中的元素并在每个元素上调用array[i].trim()
答案 6 :(得分:2)
对于那些在Kotlin中寻求相同解决方案且仅针对Java的人(如我)-如何在Kotlin中进行裁剪:
fun main(args: Array<String>) {
// array definition
val array = arrayListOf<String>(" String", "Tom Selleck "," Fish ")
println(array) // print original -> [ String, Tom Selleck , Fish ]
// remove leading and trailing spaces, result is arrayList
val sol1 = array.map { it.trim() }
println("sol1 = $sol1") // -> sol1 = [String, Tom Selleck, Fish]
// remove leading and trailing spaces, result is String
val sol2 = array.joinToString { it.trim() }
println("sol2 = $sol2") // -> sol2 = String, Tom Selleck, Fish
}
答案 7 :(得分:0)
我不知道OP最初是如何发生{" String", "Tom Selleck "," Fish "}
(6年前)的,我以为我会分享最终的结果。
我的数组是对字符串使用split的结果,该字符串在定界符周围可能有多余的空格。我的解决方案是在拆分时解决此问题。我的代码如下。经过测试后,我将splitWithTrim()放入项目的Utils类中。它处理我的用例;如果您决定使用它,则可能要考虑可能遇到的字符串和分隔符。
public class Test {
public static void main(String[] args) {
test(" abc def ghi jkl ", " ");
test(" abc; def ;ghi ; jkl; ", ";");
}
public static void test(String str, String splitOn) {
System.out.println("Splitting \"" + str + "\" on \"" + splitOn + "\"");
String[] parts = splitWithTrim(str, splitOn);
for (String part : parts) {
System.out.println("(" + part + ")");
}
}
public static String[] splitWithTrim(String str, String splitOn) {
if (splitOn.equals(" ")) {
return str.trim().split(" +");
} else {
return str.trim().split(" *" + splitOn + " *");
}
}
}
运行测试应用程序的输出为:
Splitting " abc def ghi jkl " on " "
(abc)
(def)
(ghi)
(jkl)
Splitting " abc; def ;ghi ; jkl; " on ";"
(abc)
(def)
(ghi)
(jkl)
答案 8 :(得分:-2)
String val = "hi hello prince";
String arr[] = val.split(" ");
for (int i = 0; i < arr.length; i++)
{
System.out.print(arr[i]);
}