如何判断字符是否为字母 从电话号码中提取联系人姓名
电话号码联系人姓名提取实现
场景说明
现有电话号码数据集部分号码末尾会在圆括号内标注联系人姓名,需提取姓名存入独立备注字段,数据样例如下:
(517)234-6789(Bob) 701-556-2345 (325)663-5977 (215)789-8585 425-557-7745(Pauline)
由于电话号码的区号同样使用圆括号包裹,无法通过匹配左括号(直接定位姓名起始位置,因此采用逐字符遍历字符串、拼接所有字母字符得到姓名的实现逻辑,需要替换伪代码中虚构的IS_ALPHA字符判断方法。
可运行代码(适配Progress OpenEdge ABL)
伪代码语法对应Progress OpenEdge ABL(原Progress 4GL),调整后可直接运行的完整过程如下:
PROCEDURE CreatePhoneNote (INPUT cPhone AS CHARACTER): DEFINE VARIABLE cPersonName AS CHARACTER NO-UNDO INITIAL "". DEFINE VARIABLE cThisChar AS CHARACTER NO-UNDO. DEFINE VARIABLE iCount AS INTEGER NO-UNDO. DO iCount = 1 TO LENGTH(cPhone): cThisChar = SUBSTRING(cPhone, iCount, 1). /* 单字符字母判断,兼容所有OpenEdge版本 */ IF (ASC(cThisChar) >= 65 AND ASC(cThisChar) <= 90) /* 大写A-Z */ OR (ASC(cThisChar) >= 97 AND ASC(cThisChar) <= 122) /* 小写a-z */ THEN cPersonName = cPersonName + cThisChar. END. // 后续将cPersonName赋值给对应备注字段即可 END PROCEDURE.
- 如果使用的是较高版本的OpenEdge,可直接用内置
ALPHA()函数简化判断逻辑,将判断行替换为IF ALPHA(cThisChar) THEN cPersonName = cPersonName + cThisChar.即可,效果完全一致。 - 逻辑验证结果:
- 输入
(517)234-6789(Bob),提取结果为Bob - 输入
701-556-2345(无联系人标注),提取结果为空字符串 - 输入
425-557-7745(Pauline),提取结果为Pauline
- 输入
内容的提问来源于stack exchange,提问作者Felice
相关产品推荐
相关产品推荐

