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

等等等等。我知道 split 方法,但这不会只是将每个数组元素拆分成一个全新的数组而不是组合它们吗?

如果有人可以提供帮助,将不胜感激。谢谢

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

由于使用了可变参数,您也可以这样称呼它:

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

strX变量在哪里String。你可以使用任何你想要的数量。所以要么传递一个字符串数组,要么传递你喜欢的任意数量的字符串。

如果您不再需要数组,您也可以像这样使用它:

    String[] yourArray = ...;
    yourArray = splitContent("\n", yourArray);
于 2012-11-29T08:13:49.270 回答
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

您可以先将字符串合并为一个字符串,然后对合并的字符串使用 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 回答
0

试试这个。它简单易读。

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

for (String s : testStringArray) {
    newArray.addAll(Arrays.asList(s.split("\\n"));
}
于 2012-11-29T08:26:32.643 回答
-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 回答