查找字符串c#中的所有子字符串(正则表达式,Char数组?)

本文关键字:字符串 正则表达式 Char 数组 查找 | 更新日期: 2023-09-27 18:03:20

我需要识别在字符串中找到的子字符串,例如:

"CityABCProcess Test"或"CityABCProcess Test"

屈服:["城市/","ABC","过程","测试")

  1. 子字符串中的第一个字符串可以是小写或大写
  2. 在找到小写字母或空格之前,任何包含重复大写字母的子字符串都将是子字符串"ABCProcess -> ABC, ABCProcess -> ABC"
  3. 如果有一个大写字母后面跟着一个小写字母,子字符串将是所有内容,直到下一个大写字母。

可以由正则表达式处理吗?或者我应该将字符串转换为字符数组,并使用一些索引逻辑手动检查这些情况。解在这里会起作用吗?做这件事最好的办法是什么?

查找字符串c#中的所有子字符串(正则表达式,Char数组?)

不要理会那些唱反调的人!即使像这样的事情用RegEx也不是那么复杂。我相信这个模式应该可以做到:

[a - z] [a - z] + | [a - z] + ' b | [a - z] + (? = [a - z]) | [a - z] +

查看这里的工作演示。它只是一堆OR按顺序进行的反应。下面是详细信息:

  • [A-Z][a-z]+ -任何以大写字母开头然后后跟全小写字母的单词
  • [A-Z]+'b -任何全大写的单词(以便包括最后一个大写字母,该字母将在下面的选项中被排除)
  • [A-Z]+(?=[A-Z]) -任何全大写的单词,但不包括下一个单词
  • 的第一个大写字母
  • [a-z]+ -任何全小写的单词
例如:

string input = "CityABCProcess TEST";
StringBuilder builder = new StringBuilder();
builder.Append("[A-Z][a-z]+");
builder.Append("|");
builder.Append("[A-Z]+$");
builder.Append("|");
builder.Append("[A-Z]+(?=[A-Z])");
builder.Append("|");
builder.Append("[a-z]+");
foreach (Match m in Regex.Matches(input, builder.ToString()))
    {
    Console.WriteLine(m.Value);
    }