Progress 4GL如何计算字符串中用于索引函数的分隔符数

时间:2013-10-02 18:11:09

标签: function progress-4gl

此代码

disp entry(5,"1 2 3 4"," ").

返回错误,因为条目5超出范围。

如何计算字符串中的分隔符数量,以便我不会尝试访问不存在的条目?

2 个答案:

答案 0 :(得分:6)

NUM-ENTRIES(字符串,分隔符)

答案 1 :(得分:0)

或者,如果要在字符串中获取第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),' ').

我喜欢在处理用户输入的数据时使用此方法,或者来自外部源的数据应该正确格式化...但有时可能不是。