簡體   English   中英

用中間的數字分割字符串

[英]Splitting a String by the numbers in between

我試圖在數字拆分字符串。 例如,如果我有

字符串x = 2A2B;

我希望能夠將字符串拆分為多個部分,然后在屏幕上打印出“ AABB”。 有人可以幫我嗎?

下面的代碼段可能會幫助您

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

    }

嘗試使用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”

Scanner s = new Scanner(input).useDelimiter("\D");

將讀取字符串,除以數字的任何內容,next()應該返回“ 2”,然后返回“ 2”

像這樣的東西? (假設總有一個數字后跟一個字母)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM