C#string.split()用大写字母分隔字符串

eve*_*v92 11 c# string split

我一直在使用这种Split()方法来分割字符串.但是如果你为条件设置一些字符,这个工作string.Split().有没有办法在看到时拆分字符串Uppercase

是否可以从一些不分离的字符串中获取几个单词,如:

DeleteSensorFromTemplate
Run Code Online (Sandbox Code Playgroud)

结果字符串如下:

Delete Sensor From Template
Run Code Online (Sandbox Code Playgroud)

Avi*_*Raj 21

使用 Regex.split

string[] split =  Regex.Split(str, @"(?<!^)(?=[A-Z])");
Run Code Online (Sandbox Code Playgroud)


Chr*_*iPf 7

如果您不喜欢 RegEx 并且您真的只想插入缺少的空格,这也可以完成这项工作:

public static string InsertSpaceBeforeUpperCase(this string str)
{   
    var sb = new StringBuilder();

    char previousChar = char.MinValue; // Unicode '\0'

    foreach (char c in str)
    {
        if (char.IsUpper(c))
        {
            // If not the first character and previous character is not a space, insert a space before uppercase

            if (sb.Length != 0 && previousChar != ' ')
            {
                sb.Append(' ');
            }           
        }

        sb.Append(c);

        previousChar = c;
    }

    return sb.ToString();
}
Run Code Online (Sandbox Code Playgroud)


Art*_*mat 6

正则表达式的另一种方式:

public static string SplitCamelCase(string input)
{
   return System.Text.RegularExpressions.Regex.Replace(input, "([A-Z])", " $1", System.Text.RegularExpressions.RegexOptions.Compiled).Trim();
}
Run Code Online (Sandbox Code Playgroud)