这段代码
disp entry(5,"1 2 3 4"," ").
返回错误,因为条目 5 超出范围。
如何计算字符串中分隔符的数量,以免尝试访问不存在的条目?
这段代码
disp entry(5,"1 2 3 4"," ").
返回错误,因为条目 5 超出范围。
如何计算字符串中分隔符的数量,以免尝试访问不存在的条目?
NUM-ENTRIES(字符串,分隔符)
或者,如果您想获取字符串中的第 n 个条目,或者如果该条目不存在(没有错误)则根本不获取任何内容,您可以在检查之前将“n”分隔符附加到字符串。这将确保语句正确完成——当你得到一个空白条目时,你必须决定要做什么。
DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
DEFINE VARIABLE iEntry AS INTEGER NO-UNDO.
cString = 'jim bob tom ed frank william'.
iEntry = 23.
DISPLAY ENTRY(iEntry,cString + FILL(' ',iEntry),' ').
当然,除了返回一个空白条目,您还可以返回一个已知的错误值,如下面的替代代码所示(对于原始列表之外的所有条目,它将返回“INVALID”)。请注意已知错误值上的前导分隔符(在本例中为空格) - 这对于确保每个已知错误值作为单独的列表项附加到字符串中很重要。
DISPLAY ENTRY(iEntry,cString + FILL(' INVALID',iEntry),' ').
在处理用户输入的数据或来自外部来源的数据时,我喜欢使用这种方法,这些数据应该正确格式化……但有时可能不是。