Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,每次字母出现时分割一个数组以形成更长的数组_Java_Arrays_Split - Fatal编程技术网

在Java中,每次字母出现时分割一个数组以形成更长的数组

在Java中,每次字母出现时分割一个数组以形成更长的数组,java,arrays,split,Java,Arrays,Split,每次出现一个字母时,我都会将一个字符串拆分为一个数组,但是现在我想在出现另一个字母时将数组中的每个字符串拆分为更多数组,在每个拆分下添加一个数组,并删除该字母 这是我的密码: private String input = "118u121u23n24" private int y = 0; private String[] split_main = new String[100]; private void split_u(){ String[] split = input.sp

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

这是我的密码:

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

提前感谢您的帮助。

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

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;
}
/**
*将字符串列表中的一个元素替换为
*用给定的模式拆分该元素。图案的副本
*在拆分的元素之间插入。
*@param list要修改的元素列表
*@param pattern要拆分的模式
*@param pos要拆分的元素的位置
*@返回插入的其他元素数。这是我们的金额
*名单上的人越来越多。如果元素未拆分,则返回零。
*/
int-splitElements(列表、字符串模式、int-pos){
String[]split=list.get(pos).split(pattern);
如果(拆分长度>1){
list.set(pos++,split[0]);
对于(int i=1;ireturn(split.length我建议您使用正则表达式一次拆分所有字母:

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;
}
/**
*将字符串列表中的一个元素替换为
*用给定的模式拆分该元素。模式的副本
*在拆分的元素之间插入。
*@param list要修改的元素列表
*@param pattern要拆分的模式
*@param pos要拆分的元素的位置
*@返回插入的额外元素数。这是按
*如果元素未拆分,则返回零。
*/
int-splitElements(列表、字符串模式、int-pos){
String[]split=list.get(pos).split(pattern);
如果(拆分长度>1){
list.set(pos++,split[0]);
对于(int i=1;i
String[] split = input.split("u|n");
u | n
表示用
u
n
拆分字符串,只需用两个分隔符拆分字符串

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

    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)); 
String input=“118u121u23n24”;
字符串[]s2;
ArrayList main=新的ArrayList();
String[]split=input.split(“u”);
对于(int x=0;split.length>x;x++){
s2=拆分[x]。拆分(“n”);
对于(int k=0;kk+1)
主体。添加(“n”);
}
如果(拆分长度>x+1)
main.添加(“+”);
}
//打印要测试的主阵列
对于(inti=0;i试试这个

String[] split = input.split("u|n");
u | n
表示用
u
n
拆分字符串,只需用两个分隔符拆分字符串

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

    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)); 
String input=“118u121u23n24”;
字符串[]s2;
ArrayList main=新的ArrayList();
String[]split=input.split(“u”);
对于(int x=0;split.length>x;x++){
s2=拆分[x]。拆分(“n”);
对于(int k=0;kk+1)
主体。添加(“n”);
}
如果(拆分长度>x+1)
main.添加(“+”);
}
//打印要测试的主阵列

对于(int i=0;i是可能的。使用
List
而不是数组可以轻松插入新项目


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

这是可能的。使用
List
而不是array来插入新项阿西


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

但是,我如何插入“+”或“n”在它们之间,取决于我删除了哪个字母,就像在示例输出中一样?在这种情况下,您必须迭代
split
array并在第二个后面拆分字符串,但是我如何插入“+”或“n”在它们之间,取决于我删除了哪个字母,就像在示例输出中一样?在这种情况下,您必须在
split
array上迭代,然后在第二个上拆分字符串