如何使用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)
您可以使用此处概述的正则表达式:
你的正则表达式:"((?<= [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'后跟一个大写字母.替换这些匹配会在大写和小写字母之间留一个空格
| 归档时间: |
|
| 查看次数: |
190 次 |
| 最近记录: |