java - 使用正则表达式设计捕获十六进制数或整数

标签 java regex

我正在开发一个逐行读取文件的项目。这些行中可能有也可能没有两位十六进制数。例如 EC、1F、A3、34。该行可以包含单词、单位数字、字母或各种其他特殊字符,所有字符均以空格分隔。 如果存在,则该数字将始终位于行中的同一位置。如果存在,我将需要对该行上的数据做一些特殊的事情,而不是说是否存在一位数字。我将这条线放入一个数组中,因为它用于程序中的其他内容。关于捕获这个数字的设计,我计划使用正则表达式和匹配方法从原始字符串中获取它。这将存储在其他地方的数据结构中,因为稍后我还必须对此进行加或减。

捕获此方法的最有效方法是使用 matcher.find() 方法吗?或者我应该直接把它从线上拿下来,因为我确切地知道它将被放置在哪里?我想包含匹配项,以防万一用户在输入十六进制数字时出错并且相差一位,并检查该数字是否存在。双方的输入都有一点空间。我知道我可以抓取数组并使用十六进制数所在位置的索引值,但我很好奇程序设计是否更好来计划小的差异,例如被空格分开并具有该差异已经内置到您的程序中还是保持它简单而严格?

这就是我目前获取十六进制数字的方式

wordSansNumber = wordToInsert.substring(0,5);
hexaDecimalNumber = wordToInsert.substring(5,14);
justHexaDecimalFinder = hexaDecimalFinder.matcher(hexaDecimalNumber);

如果匹配返回 true,它将执行一些操作。

最佳答案

我认为根据位置获取用户的输入不是一个好主意。例如,用户可能会意外添加空格。

我认为最好修剪该行,然后,如果数字可能仅位于该行的开头,则找到该行中的第一个空格并提取该行开头和第一个空格之间的十六进制。那么您当然必须验证它。

关于java - 使用正则表达式设计捕获十六进制数或整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29832808/

相关文章:

java - CountDownLatch 在 Android 服务中工作吗?

java - Android游戏开发-BOT玩家线程的使用和AndEngine配置

java - Google Drive Android API OAuth 身份验证问题 - onActivityResult 返回 "0"

javascript - 替换字符串值和边界空格(如果存在)

java - 如何打印换行符而不是实际转到换行符

ruby - 使用 RegExp (Ruby) 从 HTML 标签中提取字符串

java - 对于序列中的每个成员,确定它是否是完全平方数

java - 如何在 SWT java 中的选项卡式项目中创建新选项卡

java - 排除具有某些扩展名的文件名的正则表达式

regex - 如果仅其行包含特定字符串,则查找并替换单词(Regex Dreamweaver)