我正在尝试找出如何解析长字符串,并根据某些索引和长度,以最快的速度将该值转换为特定的数据类型,因为我需要每秒处理大约 1000 个字符串。明确地说,我需要这样的东西
String initial = "4239898 mdj 8746bbbrts675420120214";
Someclass parser = new Someclass(initial);
Date date = parser.getDate(26,8);
因此使用位置 26 到 26+8 的子字符串来解析日期
所以基本上,我想知道是否已经有一个类可以帮助我完成此任务,或者是否有人可以建议一些快速算法。
提前致谢
最佳答案
我刚刚为我的目的找到了一个非常酷的“框架”。它被称为fixedformat4j,它完全符合我的要求,并且性能非常快,即使它有点旧。
这是在其网站 ( http://fixedformat4j.ancientprogramming.com/ ) 上找到的基本示例:
@Record
public class BasicRecord {
private String stringData;
private Integer integerData;
private Date dateData;
@Field(offset = 1, length = 10)
public String getStringData() {
return stringData;
}
public void setStringData(String stringData) {
this.stringData = stringData;
}
@Field(offset = 11, length = 5, align = Align.RIGHT, paddingChar = '0')
public Integer getIntegerData() {
return integerData;
}
public void setIntegerData(Integer integerData) {
this.integerData = integerData;
}
@Field(offset = 16, length = 10)
@FixedFormatPattern("yyyy-MM-dd")
public Date getDateData() {
return dateData;
}
public void setDateData(Date dateData) {
this.dateData = dateData;
}
}
现在可以使用固定格式管理器加载和导出这个带注释的类
public class BasicUsage {
private static FixedFormatManager manager = new FixedFormatManagerImpl();
public static void main(String[] args) {
String string = "string 001232008-05-29";
BasicRecord record = manager.load(BasicRecord.class, string);
System.out.println("The parsed string: " + record.getStringData());
System.out.println("The parsed integer: " + record.getIntegerData());
System.out.println("The parsed date: " + record.getDateData());
record.setIntegerData(100);
System.out.println("Exported: " + manager.export(record));
}
}
关于java - Java中的字符串位置解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9286929/