7

「firstwordsecondthird」などのスペースで区切られたいくつかの単語を含む文字列とArrayListがあります。文字列をいくつかの部分に分割し、'piece'文字列をArrayListに追加したいと思います。

たとえば、「firstword secondthird」は3つの別々の文字列に分割できるため、ArrayListには3つの要素が含まれます。「123 4」は、ArrayListの4つの要素で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 ....
}

私が何を意味するのかわからない場合、またはこの投稿のいくつかのエラーを修正する必要がある場合は、コメントを残してください。御時間ありがとうございます!

4

7 に答える 7

13

次を使用して、スペースで文字列を分割できますsplit()

String[] parts = inputString.split(" ");

その後、配列を反復処理し、個々のパーツ(if !"".equals(parts[i])をリストに追加します。

于 2012-08-30T15:36:39.710 に答える
5

1つのスペースで分割する場合は、を使用できます.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]);
        }
    }
}

非標準のスペースが心配な場合は、「スペース文字」だけでなく、任意の空白をキャプチャするように、"\\s+"の代わりに使用できます。" +""\\s"

したがって、separateandaddメソッドは次のようになります。

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);
    }

}

より完全な例を次に示し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();
    }
}
于 2012-08-30T15:42:13.253 に答える
2

これを行う:

thearray = new ArrayList<String>(Arrays.asList(notseparated.split(" ")));

またはthearrayすでにインスタンス化されている場合

thearray.addAll(Arrays.asList(notseparated.split(" ")));
于 2012-08-30T15:37:34.583 に答える
2

文字列をさまざまな部分に分割したい場合は、ここのように、この文字列14-03-2016を日、月、年に分割する方法を示します。

 String[] parts = myDate.split("-");
           day=parts[0];
           month=parts[1];
           year=parts[2];
于 2016-03-14T06:39:08.507 に答える
2

を使用することをお勧めします

apache.commons.lang.StringUtils ライブラリ。

これは最も簡単で、最小限のコードで文字列を分割するなど、さまざまな条件をすべてカバーしています。

ここに分割方法への参照があります: 分割方法

同じリンクで分割方法に使用できる他のオプションを参照することもできます。

于 2012-08-30T16:15:30.767 に答える
1

あなたは.split()これを試してそれを行うことができます

String[] words= inputString.split("\\s");
于 2012-08-30T15:43:45.960 に答える
0

これを試してください:文字列を2つの部分に:

public String[] get(String s){
    int l = s.length();
    int t = l / 2;
    String first = "";
    String sec = "";
    for(int i =0; i<l; i++){
        if(i < t){
            first += s.charAt(i);
        }else{
            sec += s.charAt(i);
        }
    }
    String[] result = {first, sec};
    return result;
}

例:

String s = "HelloWorld";
String[] res = get(s);
System.out.println(res[0]+" "+res[1])

出力:

Hello World
于 2018-05-21T05:27:36.170 に答える