Fel*_*ice 2 progress-4gl openedge
我有一个从 csv 文件中读取的电子邮件地址列表,这些地址有时用逗号分隔,有时当该人拥有超过 1 个电子邮件地址时用分号分隔。
例子:
Pin email_address
11 heidi@gmail.com,hh@yahoo.com
12 tom@osu.edu;TQ@gmail.com
13 lisa@yahoo.com
14 linda@me.com;llewis@gmail.com,lvlv@yahoo.com
Run Code Online (Sandbox Code Playgroud)
假设我正在将这些读入一个变量,并使用另一个变量对每个人进行计数:
DEFINE VARIABLE emailString AS CHARACTER NO-UNDO.
DEFINE VARIABLE iEmailCount AS INTEGER.
Run Code Online (Sandbox Code Playgroud)
我想计算该人的电子邮件数量。我知道我可以使用此语法分别计算分号之间和逗号之间的条目。
iEmailCount = NUM-ENTRIES (emailString, ";").
iEmailCount = NUM-ENTRIES (emailString).
Run Code Online (Sandbox Code Playgroud)
但我该怎么说呢...
iEmailCount = Num_ENTRIES(emailString,";" OR ",").
Run Code Online (Sandbox Code Playgroud)
您必须按每个分隔符来分解该行。循环遍历一个分隔符,然后循环第二个:
DEFINE VARIABLE emailString AS CHARACTER NO-UNDO.
DEFINE VARIABLE iEmailCount AS INTEGER NO-UNDO.
DEFINE VARIABLE iLoop AS INTEGER NO-UNDO.
iEmailCount = NUM-ENTRIES(emailString).
DO iLoop = 1 TO NUM-ENTRIES(emailString): /* Loop through comma delimiters */
iEmailCount = iEmailCount + NUM-ENTRIES(ENTRY(iLoop, emailString), ";") - 1. /* Sum by semicolon delimiter */
END.
Run Code Online (Sandbox Code Playgroud)
如果您确定分号仅作为数据中的分隔符出现,则可以将其替换为逗号。然后是逗号条目数量的简单计数:
DEFINE VARIABLE emailString AS CHARACTER NO-UNDO INITIAL "linda@me.com;llewis@gmail.com,lvlv@yahoo.com".
DEFINE VARIABLE iEmailCount AS INTEGER NO-UNDO.
emailString = REPLACE(emailString, ";", ",").
iEmailCount = NUM-ENTRIES(emailString).
MESSAGE "Email string: " emailString SKIP
"Count: " iEmailCount VIEW-AS ALERT-BOX.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
273 次 |
| 最近记录: |