Java 提取字符串中的字符组

Java 提取字符串中的字符组,java,Java,我有一个字符串123456789我还有一组数字(身份,如果你愿意的话),比如 2 1 1 1 2 2 2 1 1 1 3 1 2 1 1 2 1 2 2 1 1 2 2 1 2 1 1 3 1 1 其思想是,这些数字指定应从字符串中提取的数字组(如果重要的话,从左到右的顺序)。因此,像2 3 2 1 1这样的数字意味着输出前2个字符,然后是后3个字符,然后是后2个字符,然后是后1个字符,最后是剩余的最后1个字符。例如,211212应输出123456789211139应输出12345678921

我有一个字符串
123456789

我还有一组数字(身份,如果你愿意的话),比如

2 1 1 1 2 2
2 1 1 1 3 1
2 1 1 2 1 2
2 1 1 2 2 1
2 1 1 3 1 1
其思想是,这些数字指定应从字符串中提取的数字组(如果重要的话,从左到右的顺序)。因此,像
2 3 2 1 1
这样的数字意味着
输出前2个字符,然后是后3个字符,然后是后2个字符,然后是后1个字符,最后是剩余的最后1个字符。
例如,

211212
应输出
123456789

211139
应输出
123456789

211212
应输出
123456789

2112
应输出
123456789
8.9

我试着使用方法
charAt()
,但这似乎不适合我

publicstaticvoidmain(字符串[]args){
字符串mine=“123456789”;
System.out.println(mine.charAt(2)+“\t”+mine.charAt(1)+“\t”+
mine.charAt(1)+“\t”+mine.charAt(1)+“\t”+mine.charAt(2)
+“\t”+mine.charAt(2));
}
上面给出了一个不需要的输出

3   2   2   2   3   3

如何解决这个(对我来说)相当棘手的问题?

我已经对它进行了一次简单的尝试。下面给你一些帮助吗

public static void main(String[] args) {

    int[][] identitiesBunch = new int[][] { 
        {2, 1, 1, 1, 2, 2},
        {2, 1, 1, 1, 3, 1},
        {2, 1, 1, 2, 1, 2},
        {2, 1, 1, 2, 2, 1},
        {2, 1, 1, 3, 1, 1} 
    };

    String mine = "123456789";
    char[] numbers = mine.toCharArray();

    int index = 0;
    for (int[] identities: identitiesBunch) {
        for (int id: identities ) {
            for (int i = 0 ; i < id; i++)
                System.out.print(numbers[index++]);
            System.out.print(' ');
        }
        index = 0;
        System.out.println();
    }
}
publicstaticvoidmain(字符串[]args){
int[][]identiesbunch=新int[][]{
{2, 1, 1, 1, 2, 2},
{2, 1, 1, 1, 3, 1},
{2, 1, 1, 2, 1, 2},
{2, 1, 1, 2, 2, 1},
{2, 1, 1, 3, 1, 1} 
};
字符串mine=“123456789”;
char[]number=mine.toCharArray();
int指数=0;
for(int[]标识:identiesbunch){
for(int-id:identies){
for(int i=0;i
这应该可以帮你完成这项工作

    public static void main(String[] args){
        String identities = "2 1 1 1 3 1";

        String stringToBreakApart = "123456789";

        StringBuilder sb = new StringBuilder();

        int currentPosition = 0;

        for(String identityString : identities.split(" ")){
            int identity = Integer.parseInt(identityString);

            sb.append(stringToBreakApart, currentPosition, currentPosition += identity);
            sb.append(" ");

        }

        System.out.println(sb.toString());
    }
请注意,
charAt()
返回单个字符。但在许多情况下,您需要2个或更多字符。要执行此操作,请签出
substring()