java - 提取字符串的数字模式并将其放入对象中

标签 java regex string templates

我有一个包含多个不同大小的整数代码的数组,我会将这些数字解析为一个对象。代码的长度始终相同。

例如,模式如下:

“123454212323”

  • 对象 (12) 1 个属性中的前 2 位数字
  • 另一个属性中接下来的 3 位数字 (345)
  • 另一个属性中的下一个数字 (4)
  • 另一个属性的最后 6 位数字 (212323)

我尝试使用正则表达式,但我认为它太复杂了...有任何优雅/更简单的方法可以做到这一点吗?我需要这个来实现 10 种不同的模式,并且我会知道最好的解决方案。

我可以使用 Dozer 等外部库。

最佳答案

老实说String#substring()可能是到达这里的最佳方式。如果您确实想要一个基于正则表达式的解决方案,这里有一种方法:

String input = "123454212323";
input = input.replaceAll("(\\d{2})(\\d{3})(\\d)(\\d{6})", "$1 $2 $3 $4");
String[] attributes = input.split(" ");
System.out.println(Arrays.toString(attributes));

打印:

[12, 345, 4, 212323]

这里的策略是获取数字字符串输入,然后进行正则表达式替换以用空格分隔各个数字组。然后,我们可以进行简单的字符串分割,得到一个数组,每个属性作为一个单独的元素。

123454212323 -> 12 345 4 212323

关于java - 提取字符串的数字模式并将其放入对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58171100/

相关文章:

java - Hibernate使用命名策略生成pk ID

java - 如何获取有关标记显示的地点的信息

regex - hive 中的正则表达式

Python 重新查找

java - 帮助使用正则表达式解析并获取 html 中 <p> 标记的内容

java - 是否可以使用来自多个文本文件的数据在 java 中创建列表

java - 使用 Java 8 和应用程序见解 SDK 版本 1.0.8 时,Azure Application Insights 不显示实时指标

c# - 如何将 ascii 字节向量转换为字符串?

php - 在 PHP 中拆分文本文件

c - 我无法检索主函数中的更新值