如何在openEdge中创建逗号分隔值

时间:2016-06-02 16:45:11

标签: progress-4gl openedge

新手问题。

我需要创建一个列表。但我的问题是什么是不以逗号开头的最佳方式?

例如:

output to /usr2/appsrv/test/Test.txt.
def var dTextList as char.
for each emp no-lock:
  dTextList = dTextList + ", " + emp.Name.
end.
put unformatted dTextList skip.
output close.

然后我的最终结果是

, jack, joe, brad

摆脱领先逗号的最佳方式是什么?

谢谢

6 个答案:

答案 0 :(得分:1)

这是一种方式:

[
    {
        "_id": 0,
        "x": 10,
        "UUID": 0,
        "y": 20
    },
    {
        "_id": 1,
        "x": 30,
        "UUID": 1,
        "y": 60
    }
]

答案 1 :(得分:1)

这没有任何条件逻辑:

for each emp no-lock:
  csv = csv + emp.Name + ",".
end.
right-trim( csv, "," ).

或者你可以这样做:

for each emp no-lock:
  csv = substitute( "&1,&2" csv, emp.Name ).
end.
trim( csv, "," ).

其中还有一个优点是可以很好地使用未知值(?值...)

TRIM()修剪两边,LEFT-TRIM()仅执行前导字符,RIGHT-TRIM()获取尾随字符。

答案 2 :(得分:1)

我的香草清单:

output to /usr2/appsrv/test/Test.txt.
def var dTextList as char no-undo.
for each emp no-lock:
  dTextList = substitute( "&1, &2", dTextList, emp.Name )
end.
put unformatted substring( dTextList, 3 ) skip.
output close.
  1. 替代方案可防止未知数消除列表
  2. 在循环外保持列表分隔符检查
  3. 通常会将列表分隔符保留为前缀,除非前缀确实需要输出,如输出时
  4. 当经常使用分隔列表时,您可能需要考虑创建一个列表类来从代码中删除这些无关的噪声,以便您可以在功能上将项添加到列表并导出列表而不必每次都修改这些详细信息

答案 3 :(得分:0)

我经常做

ASSIGN dTextList = dTextList + (if dTextList = '' then '' else ',') + emp.name.

答案 4 :(得分:0)

我上来(我的同事做了)他想出了这个:

dTextList = substitute ("&1&3&2", dTextList, emp.Name, min(dTextList,",")).

但是看到各种各样的方法很酷。感谢您的所有回复

答案 5 :(得分:0)

这导致没有前导逗号(分隔符)并且没有修饰trim / substring / etc

def var cDelim as char.
def var dTextList as char.
cDelim = ''.
for each emp no-lock:
  dTextList = dTextList + cDelim + emp.Name.
   cDelim = ','.
end.