【发布时间】:2015-07-17 15:28:25
【问题描述】:
我需要识别字符串中的子字符串,例如:
“CityABCProcess 测试”或“cityABCProcess 测试”
to yield : [ "City/city", "ABC", "Process", "Test" ]
- 子字符串中的第一个字符串可以是小写也可以是大写
- 在找到小写字母或空格之前,任何重复出现大写字母的子字符串都是子字符串“ABCProcess -> ABC, ABC Process -> ABC”
- 如果有一个大写字母后跟一个小写字母,则子字符串将是直到下一个大写字母之前的所有内容。
这可以通过正则表达式处理吗?或者我应该将我的字符串转换为字符数组并使用一些索引逻辑手动检查这些情况。 lambda 解决方案可以在这里工作吗?解决这个问题的最佳方法是什么?
【问题讨论】:
-
这在很大程度上取决于您的意见,但 IMO 如有疑问,请不要使用正则表达式。它可能会更快(如果速度是一个非常重要的问题,那么它可能值得考虑),但维护它通常是一件令人头疼的事情。
-
"\\p{Lu}+" 将是您的正则表达式的起点......但是手动编写代码可能会更容易。 (请注意,字符串已经是可索引的字符序列)...stackoverflow.com/questions/18125738/… 可能会有所帮助。
-
实现一个循环
for-loop中的所有字符并填充StringBuilder的方法。 -
@user2366842:在大多数情况下,正则表达式是最慢的选项。
标签: c# arrays regex string parsing