如何将字符串拆分为多个部分?

Ewe*_*wen 6 java arrays string split arraylist

我有一个字符串,其中有几个单词用空格分隔,例如"firstword second third"和一个ArrayList.我想将字符串拆分成几个部分,并将'piece'字符串添加到ArrayList中.

例如,"firstword second third"可以拆分为三个单独的字符串,因此ArrayList将有3个元素; "1 2 3 4"可以分成4个字符串,在ArrayList的4个元素中.请参阅以下代码:

public void separateAndAdd(String notseparated) {
    for(int i=0;i<canBeSepartedinto(notseparated);i++{
    //what should i put here in order to split the string via spaces?
        thearray.add(separatedstring);
    }
}

public int canBeSeparatedinto(String string)
    //what do i put here to find out the amount of spaces inside the string? 
    return ....
}
Run Code Online (Sandbox Code Playgroud)

如果你不理解我的意思,请发表评论或者我应该在这篇文章中修正一些错误.谢谢你的时间!

Baz*_*Baz 10

您可以使用split()以下方法在空格处拆分String :

String[] parts = inputString.split(" ");
Run Code Online (Sandbox Code Playgroud)

然后迭代数组并将各个部分(if !"".equals(parts[i])添加到列表中.


cor*_*iKa 5

如果要在一个空间上拆分,可以使用.split(" ");. 如果要拆分一行中的所有空格,请使用.split(" +");.

考虑以下示例:

class SplitTest {
    public static void main(String...args) {
        String s = "This is a  test"; // note two spaces between 'a' and 'test'
        String[] a = s.split(" ");
        String[] b = s.split(" +");
        System.out.println("a: " + a.length);
        for(int i = 0; i < a.length; i++) {
            System.out.println("i " + a[i]);
        }
        System.out.println("b: " + b.length);
        for(int i = 0; i < b.length; i++) {
            System.out.println("i " + b[i]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您担心非标准空格,您可以使用"\\s+"代替" +",因为"\\s"它将捕获任何空格,而不仅仅是“空格字符”。

所以你的单独和添加方法变成:

void separateAndAdd(String raw) {
    String[] tokens = raw.split("\\s+");
    theArray.ensureCapacity(theArray.size() + tokens.length); // prevent unnecessary resizes
    for(String s : tokens) {
        theArray.add(s);
    }

}
Run Code Online (Sandbox Code Playgroud)

这是一个更完整的示例 - 请注意separateAndAdd,我在测试期间发现的方法中有一个小的修改。

import java.util.*;
class SplitTest {
    public static void main(String...args) {
        SplitTest st = new SplitTest();
        st.separateAndAdd("This is a test");
        st.separateAndAdd("of the emergency");
        st.separateAndAdd("");
        st.separateAndAdd("broadcast system.");

        System.out.println(st);
    }

    ArrayList<String> theArray = new ArrayList<String>();

    void separateAndAdd(String raw) {
        String[] tokens = raw.split("\\s+");
        theArray.ensureCapacity(theArray.size() + tokens.length); // prevent unnecessary resizes
        for(String s : tokens) {
            if(!s.isEmpty()) theArray.add(s);
        }
    }

    public String toString() {
        StringBuilder sb = new StringBuilder();
        for(String s : theArray)
            sb.append(s).append(" ");
        return sb.toString().trim();
    }
}
Run Code Online (Sandbox Code Playgroud)