我有一个电子邮件地址列表,我正在从一个 csv 文件中读取这些地址,当此人拥有多个电子邮件地址时,有时用逗号分隔,有时用分号分隔。
例子:
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
假设我正在将这些读入一个变量并使用另一个变量对每个人进行计数:
DEFINE VARIABLE emailString AS CHARACTER NO-UNDO.
DEFINE VARIABLE iEmailCount AS INTEGER.
我想计算这个人的电子邮件数量。我知道我可以使用此语法分别计算分号之间和逗号之间的条目数。
iEmailCount = NUM-ENTRIES (emailString, ";").
iEmailCount = NUM-ENTRIES (emailString).
但是我怎么能最好地说...
iEmailCount = Num_ENTRIES(emailString,";" OR ",").
最佳答案
您必须按每个分隔符来分隔行。遍历一个定界符,然后是第二个:
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.
如果您确定分号只会作为分隔符出现在数据中,您可以将其替换为逗号。然后是对逗号条目数量的简单统计:
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.
关于openedge - 使用带有多个可能分隔符的 num-entries(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72748441/