java - Java中的字符串位置解析

标签 java string parsing

我正在尝试找出如何解析长字符串,并根据某些索引和长度,以最快的速度将该值转换为特定的数据类型,因为我需要每秒处理大约 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/

相关文章:

string - 如何找到Swift字符串中子字符串的最后一次出现?

java - 当嵌套 JSON 中出现相同字段名称时,将 JSON 解析为 java 对象

java - Spring ConflictingBeanDefinitionException 与现有的、不兼容的同名和类的 bean 定义冲突

java - 如何通过 Intent 发送 Map<String, List<String>>

java - Android - 带有 ArrayAdapter 和隐藏 TextView 的 ListView

c++ - 在另一个字符串中按字符复制字符串字符

java - 选择OneToMany查询jpql

c++ - 为什么我的(重新)实现 strlen 是错误的?

C# HtmlAgilityPack 解析 <ul>

powershell - 如何从Powershell中7Zip的错误结果中获取错误文件名?