0

每次出现一个字母时,我都会将一个字符串拆分为一个数组,但是我现在想将数组中的每个字符串拆分为更多数组,然后出现另一个字母,在每个拆分下方添加一个数组,并删除该字母。

这是我的代码:

private String input = "118u121u23n24"
private int y = 0;
private String[] split_main = new String[100];
private void split_u(){
        String[] split = input.split("u");
        for(int x=0; split.length>x; x++){
            split_main[y] = split[x];
            if(split.length>x+1)
                split_main[y+1] = "+";
            y +=2;
        }

这会将我的字符串拆分为这样的数组 - 每次“u”出现时创建一个新数组并添加一个加号

118
+
121
+
23n24

我现在想遍历这些数组中的每一个并查找字母 n 并将其放在单独的行上,因此这将是新数组。然而,每次我尝试这个时,我都会遇到错误,因为我似乎无法在数组上再次使用 Split 方法。如果无法使用拆分,那么还有其他方法吗?

118
+
121
+
23
n
24

提前感谢您的帮助。

4

3 回答 3

2

尝试这个

String[] split = input.split("u|n");

u|n表示用 by uorn分割字符串,简单地用两个分隔符分割字符串

当您想在两个级别中添加不同的分隔符时,您应该编写这样的代码。

    String input = "118u121u23n24";
    String[] s2;
    ArrayList<String> main = new ArrayList<String>();

    String[] split = input.split("u");
    for(int x=0; split.length>x; x++){
        s2 = split[x].split("n");

        for(int k=0; k<s2.length; k++){
            main.add(s2[k]);
            if(s2.length>k+1)
                main.add("n");
        }

        if(split.length>x+1)
            main.add("+");
    }
    // print main array to test
    for(int i=0;i<main.size();i++)
        System.out.println(main.get(i)); 
于 2012-10-04T20:36:06.147 回答
1

我建议您使用正则表达式一次简单地拆分所有字母:

String[] split = input.split("(+|n)");

如果您需要中间步骤,那么唯一的方法是遍历第一个拆分,在第二个字母上构建拆分结果数组。如果您想对多个拆分模式(不仅仅是“+”和“n”)执行此操作,您将需要一个通用过程。这是示例代码:

/**
 * Replaces one element of a list of strings with the results of
 * splitting that element with a given pattern. A copy of the pattern
 * is inserted between the elements of the split.
 * @param list The list of elements to be modified
 * @param pattern The pattern on which to split
 * @param pos The position of the element to split
 * @return The number of additional elements inserted. This is the amount by
 *         which the list grew. If the element was not split, zero is returned.
 */
int splitElements(List<String> list, String pattern, int pos) {
    String[] split = list.get(pos).split(pattern);
    if (split.length > 1) {
        list.set(pos++, split[0]);
        for (int i = 1; i < split.length; ++i) {
            list.add(pos++, pattern);
            list.add(pos++, split[i]);
        }
    } // else nothing to do
    return (split.length << 1) - 1;
}

然后你会用你想要分割的每个字符来调用它:

private String input = "118u121u23n24";
private ArrayList<String> split_main = new ArrayList<String>();
split_main.add(input);
splitElements(split_main, "+", 0);
for (int i = 0; i < len; ++i) {
    i += splitElements(split_main, "n", i);
}
于 2012-10-04T20:35:21.530 回答
0

这是可能的。使用List而不是数组可以轻松插入新项目。

如果您只想要数组,请分两遍进行:首先,迭代input并计算由于 而需要多少个单元格n,然后创建适当大小的新数组并将input内容复制到其中,沿途拆分。

于 2012-10-04T20:36:40.110 回答