Java从数组中拆分字符串

时间:2012-11-29 08:07:30

标签: java android

我有一个包含一些信息的字符串数组。

示例:

 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方法,但是这不会将每个数组元素拆分成一个全新的数组而不是组合它们吗?

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

6 个答案:

答案 0 :(得分: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);

其中strXString个变量。您可以使用任何您想要的金额。所以要么传递一个字符串数组,要么传递你喜欢的任何数量的字符串。

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

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

答案 1 :(得分: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()]);

答案 2 :(得分: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");

答案 3 :(得分:0)

尝试这是正常工作的代码&gt;&gt;

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

答案 4 :(得分:0)

试试这个。它简单易读。

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

for (String s : testStringArray) {
    newArray.addAll(Arrays.asList(s.split("\\n"));
}

答案 5 :(得分:-1)

首先,你不能写下你刚刚做的事情。你创建了一个String数组,它只能包含字符串。此外,String必须在标记“”中,如“some text here”。

此外,数组中的一个位置只能有一个字符串,如:

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