我正在开发一个逐行读取文件的项目。这些行中可能有也可能没有两位十六进制数。例如 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/