如何将1个字符串分成多个字符串

Dar*_*dar 2 c# string

如何使用C#将"ThisIsMyTestString"转换为"This Is My Test String"?

有快速的方法吗?

我一直在想一个伪代码,但它复杂而丑陋:

String s = "ThisIsMyTestString";

List<String> strList = new List<String>();
for(int i=0; i < str->Length ; i++)
{
   String tmp = "";
   if (Char.IsUpper(str[i]))
   {
     tmp += str[i];
     i++;
   }

   while (Char::IsLower(str[i]))
   {
     tmp += str[i];
     i++;
   }

   strList .Add(tmp);
}

String tmp2 = "";
for (uint i=0 ; i<strList.Count(); i++)
{
  tmp2 += strList[i] + " ";
}
Run Code Online (Sandbox Code Playgroud)

Ste*_*rov 5

您可以使用此处概述的正则表达式:

正则表达式,用大写字母拆分字符串但忽略TLA

你的正则表达式:"((?<= [az])[AZ] | AZ)"

查找并替换为"$ 1"

string splitString = Replace("ThisIsMyTestString", "((?<=[a-z])[A-Z]|[A-Z](?=[a-z]))", " $1")
Run Code Online (Sandbox Code Playgroud)

(?<=...)是一个"积极的lookbehind,一个应该在匹配之前的正则表达式.在这种情况下,lookbehind是"字符'a'到'z'" (?=...)是一个类似的构造与lookahead,其中匹配必须跟着正则表达式描述的字符串在这种情况下,前瞻是"字符'a'到'z'"在这两种情况下,最后的匹配包含一个字符"A"到"Z"后跟"a" - "z"或一个字符"a"到" z'后跟一个大写字母.替换这些匹配会在大写和小写字母之间留一个空格