1

いくつかの情報を含む文字列配列があります。

例:

 String [] testStringArray;

 testStringArray[0]= Jim,35
                     Alex,45 
                     Mark,21

 testStringArray[1]= Ana,18
                    Megan,44

まさにその通りの情報です。今私の問題は、各要素を配列内の個別の要素にし、 \n 文字に基づいて分割したいということです。

だから欲しい

        newArray[0]=Jim,35
        newArray[1]=Alex,45
        newArray[2]=Mark,21
        newArray[3]=Ana,18

等分割方法は知っていますが、これは各配列要素を結合するのではなく、完全に新しい配列に分割するだけではありませんか?

誰かが助けてくれれば幸いです。ありがとう

4

6 に答える 6

2

このようなもの:

    // Splits the given array of Strings on the given regex and returns
    // the result in a single array.
    public static String[] splitContent(String regex, String... input) {
        List<String> list = new ArrayList<>();
        for (String str : input) {
            for (String split : str.split(regex)) {
                list.add(split);
            }
        }
        return list.toArray(new String[list.size()]);
    }

このように呼び出すことができます:

    String[] testStringArray = ...;
    String[] newArray = splitContent("\n", testStringArray);

varargsを使用しているため、次のように呼び出すこともできます。

    String[] newArray = splitContent("\n", str1, str2, str3, str4);

変数はどこにstrXありますかString。お好きな金額でご利用いただけます。したがって、文字列の配列を渡すか、任意の量の文字列を渡します。

古い配列がもう必要ない場合は、次のように使用することもできます。

    String[] yourArray = ...;
    yourArray = splitContent("\n", yourArray);
于 2012-11-29T08:13:49.270 に答える
0

これを試して。シンプルで読みやすいです。

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

for (String s : testStringArray) {
    newArray.addAll(Arrays.asList(s.split("\\n"));
}
于 2012-11-29T08:26:32.643 に答える
0
    String[] testStringArray = new String[2];
    ArrayList<String> result = new ArrayList<String>();
    testStringArray[0]= "Jim,35\nAlex,45\nMark,21";
    testStringArray[1]= "Jiam,35\nAleax,45\nMarak,21";
    for(String s : testStringArray) {
        String[] temp = s.split("\n");
        for(String t : temp) {
            result.add(t);
        }
    }
    String[] res = result.toArray(new String[result.size()]);
于 2012-11-29T08:15:29.287 に答える
0

最初に文字列を1つの文字列にマージしてから、マージされた文字列にsplitメソッドを使用できます。

testStringArray[0]= Jim,35
                     Alex,45 
                     Mark,21

testStringArray[1]= Ana,18
                    Megan,44

StringBuffer sb = new StringBuffer();

for(String s : testStringArray){

    s = s.trim();
    sb.append(s);
    if (!s.endWith("\n")){
        sb.append("\n");
    }

}

String[] array = sb.toString().split("\n");
于 2012-11-29T08:16:23.167 に答える
0

試してみてください これは動作するコードです >>

String[] testStringArray = new String[2]; // size of array

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

    testStringArray[0]= "Jim,35\nAlex,45\nMark,21"; // store value
    testStringArray[1]= "Ana,18\nMegan,44";

    for(String s : testStringArray) {
        String[] temp = s.split("\n"); // split from \n
        for(String t : temp) {
            result.add(t);   // add value in result
            System.out.print(t);


        }
    }
    result.toArray(new String[result.size()]);
于 2012-11-29T08:21:50.873 に答える
-1

まず、あなたがしたことを書くことはできません。文字列のみを含むことができる文字列配列を作成しました。さらに、文字列は「ここにテキスト」のようなマーカー「」にある必要があります。

さらに、次のように、配列内の 1 つの場所に 1 つの文字列しか存在できません。

 newArray[0] = "Jim";
newArray[1] = "Alex";

そして好きではありません:

newArray[0] = Jim;

そして、確かに好きではありません:

// Here you're trying to put 2 things in 1 place in the array-index
newArray[0] = Jim, 35;

名前と年齢のような 2 つのものを組み合わせたくない場合は、2D 配列を使用する必要があります。または、おそらく ArrayList の方が適しています。

次のオブジェクトで新しいクラスを作成します。

  public class Person {

    String name;
    int age;

    public Person(String name, int age) {
    this.name = name;
    this.age = age;
    }
    }

その後、元の配列を使用するクラスに移動し、次のように記述します。

ArrayList<Person> someNameOfTheArrayList = new ArrayList<Person>();

someNameOfTheArrayList.add(new Person("Jim", 32));
someNameOfTheArrayList.add(new Person("Alex", 22));
于 2012-11-29T08:18:34.657 に答える