我是堆叠溢出的新手,所以如果我缺乏某些习惯,我会道歉。我正在使用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());
}
}
答案 0 :(得分:0)
您需要正则表达式。 \\d
用于查找数字;在这种情况下,+
符号为运算符。
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);