簡體   English   中英

如何將列表字符串拆分為字符串數組

[英]How to split strings of list into string array

我有一個包含("One.two.three", "one.two.four"). 我想將其保存在字符串數組中

One
two
three
one
two
four

其背后的邏輯是什么?

您應該使用 java 8 來運行此代碼。 只需將這些字符串拆分為“。” java 的拆分方法需要正則表達式才能匹配“。” 您需要“\。”。然后將數組轉換為列表,然后將單詞添加到列表中。

public static void main(String[] args) {
        List<String> words = new ArrayList<String>();
        List<String> list = new ArrayList<String>();
        list.add("One.two.three");
        list.add("one.two.four");
        list.stream().forEach(str -> {
            words.addAll(Arrays.asList(str.split("\\.")));
        });
        System.out.println(words.toString());
        //output : [One, two, three, one, two, four]
    }

對於 java 8+,您可以將平面圖用作 -

String[] words = list.stream().flatMap(str -> Arrays.stream(str.split("\\."))).toArray(String[]::new);

如果您正在談論 static arrays 了解數組大小以避免“索引超出范圍”異常,這一點很重要。

這樣,我提供了計算字數然后創建 output s數組來保存每個字的解決方案。

我們可以使用String.split() function 來獲取我們添加到 output 數組中的單個詞:

String[] a = {"One.two.three", "one.two.four"};
int count = 0;
for (int i = 0; i < a.length; i++) { //skip this loop if you know the wanted array size
    count += a[i].split("\\.").length;
}
String[] s = new String[count];
int k = 0;
for (int i = 0; i < a.length; i++) {
    String[] b = a[i].split("\\.");
    for (int j = 0; j < b.length; j++) {
        s[k++] = b[j];
    }
}
for (int i = 0; i < s.length; i++) {
    System.out.println(s[i]);
}

嘗試這個。

適用於 JAVA 1.8+

public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        list.add("One.two.three");
        list.add("One.two.four");
        
        List<String> newList = new ArrayList<String>();
        list.forEach(string -> {
            String[] stringArr = string.split("\\.");
            for (String innerString : stringArr) {
                newList.add(innerString);
            } 
        });
        
        String[] stringArr = newList.toArray(new String[newList.size()]);
        System.out.println(Arrays.toString(stringArr));
    }

高達 JAVA 1.7

public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        list.add("One.two.three");
        list.add("One.two.four");
        
        List<String> newList = new ArrayList<String>();
        for (String string : list) {
            String[] stringArr = string.split("\\.");
            for (String innerString : stringArr) {
                newList.add(innerString);
            } 
        }
        
        String[] stringArr = newList.toArray(new String[newList.size()]);
        System.out.println(Arrays.toString(stringArr));
    }

如果你低於 Java 8 你可以使用這個片段:

public class Main {
public static void main(String[] args) throws Exception {
    List<String> originalList = new ArrayList();
    List<String> finalList = new ArrayList();
    originalList.add("One.two.three");
    originalList.add("One.two.four");
    
    for(String myString : originalList) {
        //The \\ is to scape the dot
        finalList.addAll(Arrays.asList(myString.split("\\.")));
    }
    
    //Creates an array from the list
    String[] theArray = finalList.toArray(new String[finalList.size()]);
    
    
}
}

最后, theArray將包含:

[One, two, three, one, two, four]

查看有關將字符串拆分為多個部分的文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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