我有数千行文本文件,类似于以下内容:
0000:0010:1111:3000
0003:0010:1113:3000
0004:0010:1188:3009
依此类推,将数据解析为整数。
最明显的方法是使用
Integer.parseInt(String)
。但是,它需要一个String
,并且由于String
是不可变的,因此我们不得不一次又一次地分配String
才将它们转换为int。它要在移动设备中运行,在该设备中分配字符串并让GC运行需要花费大量精力。
我希望能够拥有一种类似于
parseInt(char[] chars, int offset, int length)
的方法,这样我们就不需要进行分配。那可能吗?标准Java / JDK / Android库中是否有任何可以实现的实现? 最佳答案
您可以使用 Scanner
并调用 useDelimiter(String)
设置分隔符。就像是,
String str = "0000:0010:1111:3000\n" + "0003:0010:1113:3000\n"
+ "0004:0010:1188:3009";
Scanner sc = new Scanner(str);
sc.useDelimiter("[:|\\s]+"); // <-- one or more colon or whitespace
while (sc.hasNextInt()) {
System.out.printf("%04d%n", sc.nextInt()); // <-- format to 4 digits with
// leading zeros.
}