簡體   English   中英

如何從數組中的所有元素中修剪空白?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM