[英]How to trim white space from all elements in array?
我只是想知道從列表的所有元素中刪除空格的最佳方法是什么。
例如,如果我有String [] array = {" String", "Tom Selleck "," Fish "}
我怎樣才能將所有元素作為{"String","Tom Selleck","Fish"}
謝謝!
嘗試這個:
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();
另一個 java 8 lambda 選項:
String[] array2 = Arrays.stream(array).map(String::trim).toArray(String[]::new);
以及沒有新數組創建的丑陋但優化的版本
Arrays.stream(array).map(String::trim).toArray(unused -> array);
原來的“數組”被修改。
在您的應用程序構建路徑中添加 commons-lang3-3.1.jar。 使用以下代碼片段修剪 String 數組。
String array = {" String", "Tom Selleck "," Fish "};
array = StringUtils.stripAll(array);
在 Java 8 中, Arrays.parallelSetAll
似乎已經為此目的做好了准備:
import java.util.Arrays;
Arrays.parallelSetAll(array, (i) -> array[i].trim());
這將就地修改原始數組,用 lambda 表達式的結果替換每個元素。
我知道這是一篇很老的帖子,但是從 Java 1.8 開始,有一種更好的方法可以修剪數組中的每個字符串。
Java 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()]);
使用此解決方案,您不必創建新數組。
就像 Óscar López 的解決方案
您可以遍歷數組中的元素並在每個元素上調用array[i].trim()
對於那些在 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
}
最初(6 年前)不知道 OP 是如何在數組中包含{" String", "Tom Selleck "," Fish "}
,我想我會分享我最終得到的結果。
我的數組是在字符串上使用 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)
String val = "hi hello prince";
String arr[] = val.split(" ");
for (int i = 0; i < arr.length; i++)
{
System.out.print(arr[i]);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.