我使用名为diff_match_patch
的match_main
方法在可用发票号列表中查找最佳匹配,例如,如果用户以不同的格式(顺序、分隔符)提供发票号
match_main
返回一个index
,例如,如果模式是20170630/4072/00
并且可能的发票号码列表是一个字符串20180923-5032-02 2016-6872-01 20170630-4072-00 20170620-4072-00 20091204-7914-00
(因此发票号码以空格作为分隔符),它将返回30(从'correct'号码开始的第一个字符的索引是20170630-4072-00
,我知道如何自动提取该号码(我知道数字的第一个字符的索引,我知道它在下一个空格之前结束)但是如果用户提供发票号码,但顺序不同(4072-00-20170630
),它将返回39,这是在“正确”数字的中间,在这种情况下,我不知道如何提取该数字(我知道字符的索引在某处)在数字内部,数字从最后一个空格开始,在下一个空格之前结束)
如果我正确理解了您的问题,那么您需要做的是在match\u main返回的字符左侧找到最后一个分隔符字符,并在该字符右侧找到第一个分隔符。如果是这样的话,像这样的方法应该是可行的:
这假设分隔符总是一个空格。您还需要检查边界条件:如果您的发票位于字符串的开头或结尾,
rfind
和find
将返回-1。这是否与您要查找的大致相同顺便说一句,塞尔吉奥苏格茨分裂字符串前面,然后做匹配。他是对的,但我假设您正在处理一个很长的输入字符串(因为您使用的是dif match patch),并且不想创建一个大数组来增加您的数字
相关问题 更多 >
编程相关推荐