如何查找RLE编码字符串的解码长度

时间:2018-03-10 07:40:18

标签: java string decode decoding

我是堆叠溢出的新手,所以如果我缺乏某些习惯,我会道歉。我正在使用java,目前正在尝试从RLE格式解码时查找字符串的长度。例如,“20A6B2C”的长度将是28(20 + 6 + 2。)我已经找到了如何识别字符串中的各个数字以打印“2062”但是无法识别如何将“20”分组为一个数字或如何按原样添加所有数字。我目前的代码如下。谢谢! (我很抱歉,但我对编码很新。)

public class RLEtrial {
public static void main(String[] args) {

    String rleString = "20A6B2C";

    if (rleString == null || rleString.isEmpty()) System.out.print("");

    StringBuilder sb = new StringBuilder();
    boolean found = false;
    int findDecodeLength = 0;
    for (char c : rleString.toCharArray()) {
        if (Character.isDigit(c)) {
            sb.append(c);
            found = true;
        }
    }
    System.out.print(sb.toString());
}

}

1 个答案:

答案 0 :(得分:0)

您需要正则表达式。 \\d用于查找数字;在这种情况下,+符号为enter image description here运算符。

String DIGIT_REGEX = "\\d+"; // minimum 1 digit number
Pattern pattern = Pattern.compile(DIGIT_REGEX);
Matcher matcher = pattern.matcher("20A6B2C");
int count = 0;
while(matcher.find()) 
    count += Integer.parseInt(matcher.group(0)); // group 0 is entire pattern (in this case entire number)

System.out.println(count);