Java 用中间的数字拆分字符串

Java 用中间的数字拆分字符串,java,string,split,digit,Java,String,Split,Digit,我想在数字处拆分一个字符串。 例如,如果我有 字符串x=2A2B 我希望能够将字符串拆分为多个部分,然后将“AABB”打印到屏幕上。有人能帮我吗?试试使用java.util.Scanner Scanner.nextInt() Scanner.next() 它们将帮助您完成任务。它可以满足您的基本目的: String x = "2A2B"; int times = 0; for(char ch:x.toCharArray()){ if(Character.isDigit(ch)){

我想在数字处拆分一个字符串。 例如,如果我有

字符串x=2A2B


我希望能够将字符串拆分为多个部分,然后将“AABB”打印到屏幕上。有人能帮我吗?

试试使用java.util.Scanner

Scanner.nextInt()
Scanner.next()

它们将帮助您完成任务。

它可以满足您的基本目的:

String x = "2A2B";
int times = 0;
for(char ch:x.toCharArray()){
    if(Character.isDigit(ch)){
        times = times*10+(Integer.valueOf(String.valueOf(ch)));
    }else{
        do{
            System.out.print(ch);
            times--;
        }while(times > 0);
        times = 0;
    }
}

我建议使用扫描器+分隔符

Scanner s = new Scanner(input).useDelimiter("\d");
将读取字符串,并将其按数字(\d)拆分,next()应首先给出“A”,然后给出“B”

将读取字符串,按非数字的任何内容进行拆分,next()应返回“2”,然后返回“2”

也许是这样的?(假设始终有一个数字后跟一个字母)

String rawSequence=“2U2D1L1R1B1A”;
字符串newSequence=“”;
扫描仪scanLetters=新扫描仪(rawSequence);
scanLetters.useDelimiter(“\d”);
扫描仪扫描编号=新扫描仪(rawSequence);
扫描字母.useDelimeter(“\D”);
String[]字母=新字符串[rawSequence.length()/2];
int[]金额=新的int[rawSequence.length()/2];
对于(int x=0;x
下面的代码片段可能会对您有所帮助

    String str = "3A2B";
    // split the string on
    String st[] = str.split("(?<=\\D)(?=\\d)");
    System.out.println(Arrays.toString(st));
    for (String s : st) {
        String intValue = s.substring(0, s.length()-1);
        int i = Integer.parseInt(intValue);
        char c = s.charAt(s.length()-1);
        while (i > 0) {
            System.out.print(c);
            i--;
        }
        System.out.println();

    }
String str=“3A2B”;
//把绳子分开

String st[]=str.split(“(?好的,这是可能的。告诉我们到目前为止你做了什么?看看有没有循环,
Integer.parseInt
String\charAt
。这应该会指引你正确的方向。
String rawSequence = "2U2D1L1R1L1R1B1A";
string newSequence = "";

Scanner scanLetters = new Scanner(rawSequence);
scanLetters.useDelimiter("\d");
Scanner scanNumbers = new Scanner(rawSequence);
scanLetter.useDelimeter("\D");

String[] letters = new String[ rawSequence.length()/2 ];
int[] amounts = new int[ rawSequence.length()/2 ];

for (int x = 0; x < rawSequence.length(); x++){
    letters[x] = scanLetters.next()
    numbers[x] = scanNumbers.next()
}

for (int i = 0, i < amounts.length, i++){
    for (int j = 0; j < amounts[i], j++){
        newSequence.concat(letters[i]);
    }
}
    String str = "3A2B";
    // split the string on
    String st[] = str.split("(?<=\\D)(?=\\d)");
    System.out.println(Arrays.toString(st));
    for (String s : st) {
        String intValue = s.substring(0, s.length()-1);
        int i = Integer.parseInt(intValue);
        char c = s.charAt(s.length()-1);
        while (i > 0) {
            System.out.print(c);
            i--;
        }
        System.out.println();

    }