【发布时间】:2023-01-04 02:27:40
【问题描述】:
我的代码中有两种情况:
- 仅包含名称且最后一项没有名称的字符串(", CPA, CFA")。例如,“约翰、简、乔”然后我使用下面的代码将最后一个逗号替换为 and 所以我得到“约翰、简和乔”
- 由姓名和末尾的 CPA/CFA 名称(", CPA, CFA")组成的字符串,例如“John, Jan, Joe, CPA, CFA”.在这种情况下,我需要将第三个到末尾的逗号替换为 and 以获取“John、Jan 和 Joe,CPA,CFA”.我只需要处理倒数第三个逗号的情况。我会注意到这些只是示例字符串,实际上它可以包含更多名称(即,它可以是“jake、jan、joe、john、jessie”),但最终我只是检查姓氏是否有名称(额外的逗号),如果有,它应该通过仅添加和替换来说明它倒数第三个逗号。
我的目标是将 and 正确添加到逗号分隔列表中的最后一项,以遵循标准的英语惯例。最后一项的指定逗号脱离了我用来添加最后一项并替换逗号的正则表达式。
我的代码:
if(str1.EndsWith(", CPA, CFA")) { //need to figure out } else { Regex.Replace(str1, ", ([^,]+)$", " and $1"); }
【问题讨论】:
-
您如何构建“结束”条件?
-
我想你可以对两者使用完全相同的正则表达式。但是,在 CPA 案例中,您只需在末尾附加该修复字符串。
-
如果我需要向下移动到倒数第三个逗号,我将如何使用相同的正则表达式?
标签: c# .net regex asp.net-core .net-core