这就是我想要的,有一个像CHAR_27[19;50H
这样的字符串,我想分别从内部获取数字。
// CHAR_27 = Character.toString( (char)27 );
// Or "\u001B"
String escapeString = "CHAR_27[19;50H";
String coord = escapeString.replaceAll("[^0-9;]", "");
List<String> coords = Splitter.on(";").splitToList(coord);
if (coords.size() != 2) continue;
rowIndex = Integer.parseInt(coords.get(0)) - 1;
colIndex = Integer.parseInt(coords.get(1)) - 1;
但有时它会抛出NumberFormatException, invalid integer CHAR_27[19
。
大多数情况下都可以。
我的正则表达式有问题吗?
或者我应该使用StringUtils.removePattern()
来获得更一致的结果吗?
我收到了诺基亚N1和GT-810(劳力士)的这份报告。它们都是Android 5.1。
我正在使用Android API 24.
答案 0 :(得分:0)
您发布的代码不会引起上述异常(如果输入是单行字符串)。
但是,您的代码包含一些漏洞:
我建议使用:
String escapeString = "CHAR_27[19;50H";
String[] coords = escapeString.split("[^0-9]+");
if (coords.length != 2) continue;
rowIndex = Integer.parseInt(coords[0]) - 1;
colIndex = Integer.parseInt(coords[1]) - 1;